使用 SendMessage 自动键盘
Auto keyboard by using SendMessage
int VK_F_DOWN = GetVirtualKey('F', 0);
int VK_F_UP = GetVirtualKey('F', 1);
HWND hWnd = FindWindow(NULL,L"Calculator.exe");
SendMessage(hWnd, WM_KEYDOWN, toascii('F'), VK_F_DOWN);
SendMessage(hWnd, WM_KEYUP, toascii('F'), VK_F_UP);
它在 Calculator.exe 上不起作用,但是当我将 hWnd
更改为 HWND(0xFFFF)
时它可以在我的 visual studio 上起作用。
而且我也已经得到了一个非零 hWnd
。我在这里错过了什么?比如权威什么的?
听起来像 User Interface Privilege Isolation。正如维基百科文章所解释的那样,您可以在应用程序清单中请求所需的访问权限。
也就是说,您应该使用 SendInput 而不是 SendMessage。参见 one of Raymond Chen's blog entries on that point。
int VK_F_DOWN = GetVirtualKey('F', 0);
int VK_F_UP = GetVirtualKey('F', 1);
HWND hWnd = FindWindow(NULL,L"Calculator.exe");
SendMessage(hWnd, WM_KEYDOWN, toascii('F'), VK_F_DOWN);
SendMessage(hWnd, WM_KEYUP, toascii('F'), VK_F_UP);
它在 Calculator.exe 上不起作用,但是当我将 hWnd
更改为 HWND(0xFFFF)
时它可以在我的 visual studio 上起作用。
而且我也已经得到了一个非零 hWnd
。我在这里错过了什么?比如权威什么的?
听起来像 User Interface Privilege Isolation。正如维基百科文章所解释的那样,您可以在应用程序清单中请求所需的访问权限。
也就是说,您应该使用 SendInput 而不是 SendMessage。参见 one of Raymond Chen's blog entries on that point。