VC无法发送WIN键消息
各位好,我这里有一个问题,在我使用下面代码的时候,根本不起任何作用。keybd_event(VK_LWIN, 0, 0, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
我想发送任何使用windows键+其它键,比如WIN+TAB,WIN+R都无法发送。
我使用的Windows8操作系统。谁能告诉我这是为什么吗? --------------------编程问答-------------------- keybd_event已经过时了,改用SendInput。
以WIN+TAB举例
--------------------编程问答-------------------- 多谢楼上.但是楼上给的代码依旧没法发送.您知道是有什么其它原因吗? --------------------编程问答--------------------
INPUT input[4] = {0};
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_LWIN;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = VK_TAB;
input[2].type = INPUT_KEYBOARD;
input[2].ki.dwFlags = KEYEVENTF_KEYUP;
input[2].ki.wVk = VK_TAB;
input[3].type = INPUT_KEYBOARD;
input[3].ki.dwFlags = KEYEVENTF_KEYUP;
input[3].ki.wVk = VK_LWIN;
SendInput(4, input, sizeof(INPUT));
WIN+TAB只有在运行过至少2个以上的metro应用时才有用。
可以试试看其他组合键比如WIN+R、WIN+U、WIN+E等等。WIN+L没有效果,可以用LockWorkStation()函数来锁屏。
另外,如果当前窗口焦点所处的那个程序的权限高于你的程序时,你的SendInput就不起作用了。
比如说你以管理员身份运行cmd,而你的程序以普通权限运行,那么当焦点处于cmd的时候,你的SendInput就没有效果了,你以管理员身份运行你的程序就有效果了。
补充:.NET技术 , VC.NET