首页
社区
课程
招聘
[求助]大家谁知道NtUserSendInput的函数原型
发表于: 2008-3-6 11:31 9149

[求助]大家谁知道NtUserSendInput的函数原型

2008-3-6 11:31
9149
在网上搜了一圈都没有找到相关资料,我想用NtUserSendInput发送按键到Active Window,但不知道调用参数填什么。多谢各位大侠!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
UINT NtUserSendInput(
    IN UINT    cInputs,
    IN CONST INPUT *pInputs,
    IN int     cbSize)
{
    LPINPUT pInput2 = NULL;
    PTHREADINFO ptiCurrent;
    TL tlInput;
    DWORD dwArgumentError = ERROR_INVALID_PARAMETER;

    BEGINRECV(UINT, 0);

    if (sizeof(INPUT) != cbSize || cInputs == 0) {
        MSGERROR(dwArgumentError);
    }

    ptiCurrent = PtiCurrent();

    /*
     * Probe arguments
     */
    try {
        ProbeForReadBuffer(pInputs, cInputs, DATAALIGN);

        pInput2 = UserAllocPoolWithQuota(cInputs * sizeof(*pInputs), TAG_SENDINPUT);
        if (pInput2 == NULL) {
            ExRaiseStatus(STATUS_NO_MEMORY);
        }
        RtlCopyMemory(pInput2, pInputs, cInputs * sizeof(*pInputs));
    } except (StubExceptionHandler(TRUE)) {
        MSGERRORCLEANUP(0);
    }

    ThreadLockPool(ptiCurrent, pInput2, &tlInput);
    retval = xxxSendInput(cInputs, pInput2);
    ThreadUnlockPool(ptiCurrent, &tlInput);
CLEANUPRECV();
    if (pInput2) {
        UserFreePool(pInput2);
    }
    TRACE("NtUserSendInput");
    ENDRECV();
}
2008-3-6 11:37
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
建议你对不熟悉的技术方向,先到收集足够的信息再去搞

只帮你这一次
2008-3-6 11:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
太感谢了!!
2008-3-6 12:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不好意思,请问INPUT的定义是什么啊?或者不如你告诉我哪里可以找到更detail的信息,我就不麻烦你了!!
2008-3-6 12:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
找到SendInput在MSDN里的定义了,类似的,多谢!
2008-3-6 17:29
0
雪    币: 5156
活跃值: (4027)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
7
你去下nt4、2000的源代码。reactos也可以。你在google里用"NtUserSendInput reactos"
做关键字搜。

windows kernel\windows_2000_source_code\win2k\private\ntos\w32\ntuser\kernel\ntstubs.c
windows kernel\windows_2000_source_code\win2k\private\ntos\w32\ntuser\inc\ntuser.h

你用emule去下源码包。
2008-3-7 09:50
0
游客
登录 | 注册 方可回帖
返回
//