掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フックしたキーコードをAppで受け取るには? (ID:26255)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Mr.XRAY様 解答ありがとうございます。 なるほど、そのような簡単な方法があるのですね。HPも大変参考になりました。 さて、それでやってみたのですが、キーコードが送られてこないようです。 フックは問題無くされるのですが、Formの方には何も反応がありません。 どこかメッセージの受け渡しが上手く行っていないのだと思うのですが、見ていた だけないでしょうか? 以下、それらの箇所の抜粋です。 (DLL側) var hHookCallWndProc:integer; MainFormHandle: THandle; Function KeyWndProc(nCode:Integer; wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall; begin if nCode < 0 then begin Result := CallNextHookEx(hHookCallWndProc, nCode, wParam, lParam); end Else Begin; Result := CallNextHookEx(hHookCallWndProc, nCode, wParam, lParam); If nCode=HC_ACTION then begin Case Wparam of VK_TAB: begin Result:=-1; PostMessage(MainFormHandle,WM_APP+100,Wparam,0); //★キーコードを送信★ end; End; End; End; End; Function InstallCallWndProcHook(AppHandle:THandle):Boolean;stdcall; var Ret:Integer; begin Result:=False; Ret:=SetWindowsHookEx(WH_KEYBOARD,@KeyWndProc,HInstance,0); if Ret=0 then Exit else hHookCallWndProc:=ret; Result:=True; MainFormHandle := AppHandle; //★Form1のハンドルを受け取る★ end; (APP側) procedure TForm1.Button1Click(Sender: TObject); begin InstallCallWndProcHook(Form1.Handle); end; procedure TForm1.WndProc(var msg: TMessage); begin if msg.Msg=WM_APP+100 then showmessage(inttostr(msg.wParam) +' キーはフックされています'); inherited WndProc(msg); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.