当前位置:编程学习 > C#/ASP.NET >>

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));
--------------------编程问答-------------------- 多谢楼上.但是楼上给的代码依旧没法发送.您知道是有什么其它原因吗? --------------------编程问答--------------------
引用 2 楼 jiaxing2 的回复:
多谢楼上.但是楼上给的代码依旧没法发送.您知道是有什么其它原因吗?


WIN+TAB只有在运行过至少2个以上的metro应用时才有用。
可以试试看其他组合键比如WIN+R、WIN+U、WIN+E等等。WIN+L没有效果,可以用LockWorkStation()函数来锁屏。

另外,如果当前窗口焦点所处的那个程序的权限高于你的程序时,你的SendInput就不起作用了。
比如说你以管理员身份运行cmd,而你的程序以普通权限运行,那么当焦点处于cmd的时候,你的SendInput就没有效果了,你以管理员身份运行你的程序就有效果了。
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,