|
|
我?L?使用 SendInput ??一??通用的模?M送出?合?的函? SendKey
目前的?y?下,大部份的?合?都可以正常送出,除了 Shift + Insert
我是以 SendKey(MOD_SHIFT, VK_INSERT); 的方式呼叫
可是送出去的效果只有 VK_INSERT,而?]有按下 Shift 的作用
也就是??o法正常?绦形蚁胍?摹纲N上」的效果
但 SendKey(MOD_SHIFT, VK_SPACE); 等等其它的?合?都是 OK 的
所以想???前???有?]有解?Q的?法
或是其??如果想送出 Shift + Insert 可以不用透? SendInput ??? API ?
PS. 我使用 VC6.0 SP6 + WinXP SP2 CHT
以下是我的程式?
--------------------------------------------------------------------------
#define _WIN32_WINNT 0x0501
#include <windows.h>
Uint SendKey(Uint fuModifiers, Uint uVirtKey) {
INPUT KBInput[8];
long MEI = GetMessageExtraInfo();
int i, cnt=0;
ZeroMemory(KBInput, sizeof(KBInput));
if(fuModifiers & MOD_ALT) KBInput[cnt++].ki.wVk = VK_MENU;
if(fuModifiers & MOD_CONTROL) KBInput[cnt++].ki.wVk = VK_CONTROL;
if(fuModifiers & MOD_SHIFT) KBInput[cnt++].ki.wVk = VK_SHIFT;
if(uVirtKey) KBInput[cnt++].ki.wVk = uVirtKey;
for(i=0; i<cnt; i++) {
KBInput[cnt+i].type = KBInput[cnt-i-1].type = INPUT_KEYBOARD;
KBInput[cnt+i].ki.dwExtraInfo = KBInput[cnt-i-1].ki.dwExtraInfo = MEI;
KBInput[cnt+i].ki.wVk = KBInput[cnt-i-1].ki.wVk;
KBInput[cnt+i].ki.dwFlags = KEYEVENTF_KEYUP;
}
return SendInput(cnt * 2, KBInput, sizeof(INPUT));
} |
|