CBTProcからのメッセージ送信について

解決


kosy  2006-12-01 02:02:43  No: 63755

ウィンドウの監視を行っており、アクティブウィンドウの情報を
別プロセスへ送信したいのですが、送信先のウィンドウハンドルを
どのようにして取得すればいいのかわかりません。
アドバイスお願いできないでしょうか?

開発環境はVC6.0です。

以下ソース
// コールバック
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  // ウィンドウアクティブ化
  if(nCode==HCBT_ACTIVATE) {
    // ウィンドウハンドル取得
    HWND hWnd = (HWND)wParam;
    // タスクバーに表示されているアプリケーションか判定
    if( GetWindow(hWnd, GW_OWNER) == NULL &&
      IsWindowVisible(hWnd) == TRUE &&
      GetWindowTextLength(hWnd) > 0 ) {

      // 指定されたウィンドウへメッセージ送信
      PostMessage(ここに指定するウィンドウハンドルはどうやって取得するのか?,WM_USER+1,wParam,lParam);
    }
  }
  //次のフックを呼ぶ
  return CallNextHookEx(hHookWnd, nCode, wParam, lParam);
}
// フックのインストール
void CALLBACK SetHook()
{
  hHookWnd = SetWindowsHookEx(WH_CBT, CBTProc, hdll, 0);
}
// フックの解放
void CALLBACK ReleaseHook()
{
  UnhookWindowsHookEx(hHookWnd);
}

よろしくお願いします。


Blue  2006-12-01 02:07:42  No: 63756

グローバル変数使うのではダメでしょうか?


kosy  2006-12-01 02:34:04  No: 63757

Blueさんに指摘して頂いた通り、
グローバル変数を用意したところ
うまくいきました。
ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加