掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
グローバルフックをVK_CANCELで終了させたいのですが (ID:48747)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になります。 前回作成したグローバルフックをVK_CANCEL(Ctrl+Break)で終了させたいのですが、どう記述すればいいのでしょうか?Mr.XRAYさんのサイトを参考にさせてもらったのですが、よくわかりません。 //----------------------------- //------------------------------------------------------------------ // キーフックのコールバック関数 //------------------------------------------------------------------ function LowLevelKeyProc(nCode: Integer; wPar: WPARAM; lPar: LPARAM): LRESULT; stdcall; var Lkbdll : PKBDLLHOOKSTRUCT; LScanCode : Integer; pEvent: pEVENTMSG; begin if nCode < 0 then begin Result := CallNextHookEx(KeyHookHandle, nCode, wPar, lPar); exit; end; if nCode = HC_ACTION then begin pEvent := pEVENTMSG(lParam);//<<<<<コンパイル時ここでエラー! if (wPar=WM_KEYDOWN) and (Lo(pEvent.paramL)=VK_CANCEL) then begin UnhookWindowsHookEx(KeyHookHandle); end; end; Result := CallNextHookEx(KeyHookHandle, nCode, wPar, lPar); end; //------------------------------ なお、前回のマウスフックのコールバック関数は以下のようにマウスの右ボタンを離したときにチェックするように統一してあります。 //----------------------------------------------------------------- // マウスフックのコールバック関数 //----------------------------------------------------------------- function LowLevelMouseProc(nCode:integer; wPar: WPARAM; lPar: LPARAM): LRESULT; stdcall; var IsCtrl:Integer; Label _NextProc; begin if nCode < 0 then begin Result := CallNextHookEx(MouseHookHandle, nCode, wPar, lPar); exit; end; if nCode = HC_ACTION then begin IsCtrl := (GetKeyState(VK_CONTROL) and $8000); if (WPar = WM_RBUTTONUP) and(IsCtrl = 0 ) then begin goto _NextProc; end; if (WPar = WM_RBUTTONUP) and(IsCtrl <> 0 ) then begin keybd_event(VK_Control, 0, 0, 0); //押した状態にする keybd_event(VK_NUMPAD5, 0, 0, 0); //押した状態にする keybd_event(VK_NUMPAD5, 0, KEYEVENTF_KEYUP, 0); //放した状態にする keybd_event(VK_Control, 0, KEYEVENTF_KEYUP, 0); //放した状態にする Result := 3; exit; end; end; _NextProc: Result := CallNextHookEx(MouseHookHandle, nCode, wPar, lPar); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.