名前 題名 ▼ Takiさん > マスターこんばんは。Takiです。 > > 今、パソコンのマウス操作を記録するプログラムを作っています。 > 例えば、スタートボタンをクリックしたら「スタート」、すべてのプログラムを > クリックしたら「すべてのプログラム」・・・のようにです。 > > その情報を得るのにIAccessibleが非常に役立っています。 > > ところが問題があります。 > > 「メモ帳」を「閉じる」とメモ帳のウィンドウが消えるので、記録されるのが > 「デスクトップ」になってしまうのです。 > メニューを選んだ時も同じで、「コピー」をクリックすると、メニューが消えるので > 記録は「Edit」になってしまいます。 > > 今はタイマーでif((GetAsyncKeyState(VK_LBUTTON) and $8000) = 0) を監視しています。 > この方法では情報を得る前に対象が消えてしまうので、やはりメッセージのフックを > 使うべきなのかなと思っています。 > > マスターの「290_グローバルフック WH_GETMESSAGE」サンプルを教材にして色々と > 勉強しましたが、DLLのplHookGetMessageUnit中のMyHookProc関数の中身が分かりません。 > > nCodeが負の時はCallNextHookEXで処理するとか、nCode=HC_ACTIONの時に処理するとかは > msdnとかにもそのように書かれているので何も考えないようにそのように・・・ > > 分からない所は、wParam=PM_REMOVEの時にメッセージ情報をDLLからアプリケーションに > 返して(PostMessageして)ありますよね。 > 説明には「この関数を通過後メッセージキューからメッセージが削除される」とあります。 > 「この関数を」の関数はMyHookProcのことですか。 > > それと、私のメッセージ処理に対するイメージは、メッセージを覗いたら > inherited WndProc(Message)で後処理するといった事なのですが、そうした命令が無いのも > 理解できないのです。 > > 上のメッセージフックの仕組みに対する疑問とは別に、メッセージを本来のウィンドウに > 届くのを待たせるようなコードが書けるのかという事が最大の問題です。 > > フックのコールバック関数に重い処理は書くなと書いてあったし、DLLにIAccessibleの > コードを・・・なんて考えたくもありません。 > > 何か良い方法は無いでしょうか。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link