小编Hor*_*gan的帖子

通过 SendInput (Win32 API) 的键盘输入不起作用,硬件之一起作用

我有一个任务,我需要在浏览器中显示的 Web 表单上单击鼠标,还需要进行一些键盘输入,如用数字填充文本框或按向下箭头顺序排列,以便在组合框中进行选择。

我拥有的窗口处理程序,点击的坐标,它对我来说很好用(非常简单的功能):

 extern "C" __declspec(dllexport) void __stdcall PutSingleClick(unsigned hwnd, int x, int y)
{

    SendMessage(((HWND) hwnd), WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
    SendMessage(((HWND) hwnd), WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(x, y));
}
Run Code Online (Sandbox Code Playgroud)

当我尝试发送键盘输入时出现我的问题,例如通过调用:

extern "C" __declspec(dllexport) void __stdcall PutKeystrokeDown(int times)
{
    INPUT ip;
    ip.type = INPUT_KEYBOARD;
    ip.ki.time = 0;
    ip.ki.wVk = 0;
    ip.ki.dwExtraInfo = 0;

    ip.ki.wScan = VK_DOWN;

    for(int i = 0; i < times; i++)
    {
        ip.ki.dwFlags = KEYEVENTF_SCANCODE;
        SendInput(1, &ip, sizeof(INPUT));
        ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
        SendInput(1, &ip, sizeof(INPUT));
    }
    ip.ki.dwFlags …
Run Code Online (Sandbox Code Playgroud)

browser windows keyboard winapi input

0
推荐指数
1
解决办法
2044
查看次数

标签 统计

browser ×1

input ×1

keyboard ×1

winapi ×1

windows ×1