如何攔截 Space+A 按鍵的 Message? |
答題得分者是:harpist
|
AJ
一般會員 發表:9 回覆:19 積分:20 註冊:2003-06-27 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
harpist
資深會員 發表:3 回覆:251 積分:430 註冊:2002-10-03 發送簡訊給我 |
<textarea class="cpp" rows="10" cols="60" name="code">//-------------------------------
bool Space_Down = false;
LRESULT CALLBACK __declspec(dllexport) __stdcall KbdHookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
bool bHandleKeystroke = false;
if((lParam&0xc000ffff)==1) //有鍵按下
{
switch(wParam)
{
case VK_SPACE:
Space_Down = true;
bHandleKeystroke = true;
break;
}
}
if((lParam&0xc0000000)==0xc0000000)// 有鍵放開
{
switch(wParam)
{
case VK_SPACE:
Space_Down = false;
bHandleKeystroke = true;
break;
}
}
if((DWORD)lParam &0x40000000 && (HC_ACTION == nCode))
{
switch(wParam)
{
case 0x41:
if(Space_Down)
ShowMessage("抓到了^_^b");
bHandleKeystroke = true;
break;
}
}
return bHandleKeystroke;
}
//-------------------------------
</textarea>
電腦沒裝Delphi這是用BCB寫的您參考看看 ===================引 用 文 章=================== 小弟使用Hook攔截WH_GETMESSAGE, 但是不知道要如何攔截 Space A 的按鍵組合, 原本想用GetKeyState()但他只能取得Ctrl, Shift, Alt 請問該如何做呢?謝謝。
------
~§~迷時師渡,悟了自渡~§~ |
AJ
一般會員 發表:9 回覆:19 積分:20 註冊:2003-06-27 發送簡訊給我 |
謝謝harpist提供程式碼
小弟已經測試ok,謝謝~ 附上Delphi程式碼: <textarea class="delphi" rows="10" cols="60" name="code">
function GetMsgProcHandler(code: integer; wp: WPARAM; lp: LPARAM):LResult; stdcall; export;
begin
result:= 0; if code<0 then
begin
result:= CallNextHookEx(hMessageHook, code, wp, lp);
exit;
end; case PMsg(lp)^.message of
WM_KEYDOWN:
begin
//特殊組合功能鍵
if PMsg(lp)^.wParam = VK_SPACE then
begin
SpaceDown:= true;
PMsg(lp)^.message:= WM_NULL; //不將訊息發送給視窗
exit;
end; if SpaceDown then
begin
if PMsg(lp)^.wParam = Ord('A') then
begin
PostMessage(PMsg(lp)^.hwnd, WM_KEYDOWN, VK_F8, 0); //按下 F8
PostMessage(PMsg(lp)^.hwnd, WM_KEYUP, VK_F8, 0); //放開 F8
end; PMsg(lp)^.message:= WM_NULL; //不將訊息發送給視窗
exit;
end;
end; WM_KEYUP:
begin
if PMsg(lp)^.wParam = VK_SPACE then
begin
SpaceDown:= false;
PMsg(lp)^.message:= WM_NULL; //不將訊息發送給視窗
end;
end;
end;
</textarea>
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |