发送组合键
怎样用SendInput发送组合键.如Alt+f4 问题点数:20、回复次数:2Top
1 楼striking(庸人自扰)回复于 2006-03-14 21:06:43 得分 5
可以模拟按组合键的过程,以下参数是MSDN中提供的,WPARAM参数是按键的virtual-key code,LPARAM参数的位设置如下:
0 -15 本次消息按键的重复次数
16-23 指定扫描码
24 标识该键是否为扩展键,比如Ctrl,1表示是
25-28 保留
29 对WM_KEYDOWN为0,对WM_KEYUP为1
30 前一次按键状态。如果在消息发出前键已按下,则为1。
31 对WM_KEYDOWN为0,对WM_KEYUP为1
例子:
SendMessage(WM_KEYDOWN, (WPARAM)17, (LPARAM)0x001d0001); // 按下Ctrl
SendMessage(WM_KEYDOWN, (WPARAM)38, (LPARAM)0x01480001); // 按下上键
SendMessage(WM_KEYUP, (WPARAM)38, (LPARAM)0xc1480001); // 放开上键
SendMessage(WM_KEYUP, (WPARAM)17, (LPARAM)0xc01d0001); // 放开Ctrl
Top
2 楼vcmute(BCare4 H1Rest Good9!)回复于 2006-03-14 21:07:01 得分 15
INPUT input[4];
memset(input, 0, sizeof(input));
input[0].type = input[1].type = input[2].type =
input[3].type = INPUT_KEYBOARD;
input[0].ki.wVk = input[2].ki.wVk = VK_MENU;
input[1].ki.wVk = input[3].ki.wVk = VK_F4;
// Then release it. THIS IS IMPORTANT
input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
input[0].ki.time = input[1].ki.time =
input[2].ki.time = input[3].ki.time = GetTickCount();
SendInput(4, input, sizeof(INPUT));
Top




