掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フックしたキーコードをAppで受け取るには? (ID:26259)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
あ、正確にはDLLへのハンドルの受け渡しは出来ているのですが、それが 途中で消えてしまうという状況です。つまり、具体的には ① function InstallCallWndProcHook(AppHandle:THandle): Boolean; stdcall; には、確かにForm1のハンドルを渡せているようで、その中では確かに AppHandleに値が来ており、上のコードではグローバル変数MainFormHandleに 代入してますが、そこにちゃんと値が入っているのが確認されます。ですが ② function KeyWndProc(nCode:integer;wParam:integer;lParam:integer): integer; stdcall; の中では、MainFormHandleの値が消えてしまう、という状況です。 そこで、単純にintegerのグローバル変数をDLL内に作ってみて適当な値を 入れたところ、 同様に、①や他の場所では代入した値をちゃんと持っているのですが、 ②の中でその変数を覗くと0になっている、というのが確認されました。 (上でも書きましたが、この関数②内でもう一度グローバル変数に値を代入 しなおしてやれば、その値を持ちます。) 最初は、上のコードの①内で MainFormHandle := AppHandle; //★Form1のハンドルを受け取る★ の行が Ret:=SetWindowsHookEx(WH_KEYBOARD,@KeyWndProc,HInstance,0); の行より下にあるからかとも思ったのですが、それは関係ないようでした。 ちなみに、Delphi2007Pro+VistaHomeBasicでも同様の現象が見られました。 以上、こんな感じです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.