問題タブ [window-messages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2295 参照

c++ - ウィンドウ メッセージ WM_UAHDRAWMENUITEM (0x92) の定義の場所

ウィンドウ描画メッセージを処理するフック dll を作成しています。
Vista 以降では、不明なメッセージ ID がフック DLL によって受信されることがわかりました。具体的には 0x90 ~ 0x95 です。
私はいくつかのグーグルを行い、msdnリンクこれを見つけました。これは、それらがどのようなメッセージであるかを教えてくれました:

しかし、どのヘッダー ファイルにもマクロの定義が見つかりませんWM_UAHDRAWMENUITEM。コンパイラは「未定義のシンボル」について文句を言います。「WM_UAHDRAWMENUITEM」でグローバル検索を行いましたが、何も見つかりませんでした。

現在、このメッセージを処理するために 0x92 を使用しています。
私の質問は、ハードコードされた 0x92 を Windows 定義のマクロにうまく置き換える方法は?

0 投票する
1 に答える
954 参照

c# - WndProc メッセージ = 49619 -何ですか?

wpf のドラッグ バグをデバッグしており、wndproc を購読しています。wparam=0 および lparam=0 のメッセージ ID 49619 を受け取りました。私はグーグルの努力を尽くしましたが、このウィンドウメッセージの名前が何であるかを明らかにすることができませんでした.

あなたが知っているなら、素晴らしい。ウィンドウ メッセージのリストにそれを含む Web サイトを提供できれば、さらに効果的です。

16 進値 = 0xC1D3

0 投票する
1 に答える
936 参照

c++ - Windows メッセージを受信/キャプチャできません

私はコンテキストにかなり慣れてMFCMessage handlingません。

派生クラスを持つDLLコンシューマ アプリケーションがあります。これで a が呼び出され、 aなどがこのウィンドウに表示されます。CFrameWndExCMainFrameDLLCDialogMainFrame

アプリケーションで特定のメッセージを受信したいと考えています。

そこで、DLL コンシューマ アプリケーションのメッセージ マップで予想されるメッセージを宣言し、適切なメッセージ ハンドラを定義しました。

アプリケーションがこれらの登録されたメッセージを送信していることはわかりますが、Consumer Window でメッセージを受信/処理することはできません。つまり、それらのメッセージがブロードキャストされても何も起こりません。

Mainfrm.h

Mainfrm.cpp

以上のことから、これらのメッセージをブロードキャストする別のアプリケーションからこれらのメッセージを受信するように、コンシューマ アプリケーションが登録されていることがわかります。

ただし、メッセージがブロードキャストされている状態を作成すると、メッセージを受信する他のアプリケーションから確認できるように、アプリケーションでそのようなメッセージがキャッチされません。

問題がどこにあるのかわかりません。ウィンドウは、内部に別のCDialog派生物がありますが、常に上にあります。DLL

0 投票する
2 に答える
169 参照

c++ - コントロール内からダイアログの最小化を決定する

ダイアログ上にあるコントロール内からダイアログの最小化を決定する方法はありますか?

ダイアログが最小化されたときにON_WM_SIZEType で呼び出されるウィンドウ メッセージを使用しています。SIZE_MINIMIZED

ただし、ダイアログが最小化されている場合、このメソッドは呼び出されません。コントロールが再び復元されるときに、透明度を使用してコントロールを正しく再描画するために、その最小化を追跡する必要があります。

0 投票する
1 に答える
245 参照

windows - シェル拡張でウィンドウ メッセージをインターセプトする方法

RegisterWindowMessage特定のウィンドウ メッセージ (に登録されたカスタム メッセージ) が別のアプリケーションによってブロードキャストされたときに、その構成をリロードする必要があるシェル拡張機能があります。

メッセージを傍受するためにいくつかの方法を試しました。

  • を使用して、Windows エクスプローラーのウィンドウにウィンドウ サブクラス コールバックをインストールしますSetWindowSubclass。これは Window 7 では機能しますが、Windows 8 では機能しません。明らかDllMainにメイン スレッドでは呼び出されSetWindowSubclassず、別のスレッドからは機能しないためです。これはドキュメントに記載されています:

    サブクラス化ヘルパー関数を使用して、スレッド間でウィンドウをサブクラス化することはできません

  • CALLWNDPROCを使用して のフックをインストールしSetWindowsHookExます。システム全体の速度を落としたくないので、特定のスレッド (エクスプローラーのメイン スレッド) だけにフックをインストールします。これは Windows 8 では機能しますが、Windows 7 では機能しません...これは、間違ったスレッドにフックしているためだと思われますが、よくわかりません。とにかく、このアプローチは過度に邪魔に思えます。

  • メッセージを処理するメッセージのみのウィンドウを作成します。メッセージのみのウィンドウはブロードキャストされたメッセージを受信しないため、これはまったく機能しません。

シェル拡張でウィンドウ メッセージを確実に受信する方法はありますか?

最初はウィンドウ メッセージがシェル拡張機能に通知する最も簡単な方法のように思われましたが、別のメカニズムがより適切であると思われる場合は、提案をお待ちしています。

0 投票する
1 に答える
774 参照

c++ - 新しく作成されたデスクトップがキーボード イベントを受信しない

新しいデスクトップで起動する小さなプログラムを作成しました。

その後、次の行を使用して、そのデスクトップで別のアプリケーションを開始しました。

pathModuleNameによって取得された自己位置GetModuleFileName(NULL)です。

新しく作成されたアプリケーションは、HWND を別のウィンドウに取得し、次のコマンドを使用してウィンドウ メッセージを送信します。

したがって、基本的Aに、デスクトップ DEFAULT 上のアプリケーションは、デスクトップ X でアプリケーションを開始し、同じデスクトップ X で開始されたB別のアプリケーションへの HWND を取得します。C

B私の問題は、デスクトップ Xのアプリケーションからのキーボード イベントがアプリケーションでトリガーされないことですC。を使用した場合にのみSwitchDesktop(B)、イベントがトリガーされ、コードが適切に実行されます。

私は何が欠けていますか?

0 投票する
3 に答える
1866 参照

c# - Winforms で WinKey+D キー シーケンスをキャッチする

アプリケーションが常にデスクトップ レベルで表示されるようにしようとしています。これは、アプリが LWin+D や RWin+D などのキー シーケンスを無視する必要があることを意味します。私はそれをこのように動作させようとしました:

ただし、D ボタンなしで、RWin/LWin ボタンのみをキャッチします。

また、独自のメッセージ フィルタを作成しようとしましたが、うまくいきませんでした。これらすべてのメッセージと Bitwise:

では、アプリケーションで R/LWin+D をキャッチ/無視するにはどうすればよいでしょうか?

0 投票する
0 に答える
55 参照

sendmessage - Windows で PostMessage を介して受信側ウィンドウがデータを取得しない

void SendDataFromWorkerThread(HWND ハンドル)

{

}

別のスレッドで受信中..

void GetDataFromWorkerThread(WPARAM wparam, LPARAM lparam)

{

}

私のアプリケーションはシングル スレッドで、一部の作業 (x 値 "10" を超えるデータを返す) をワーカー スレッドに委任しています。メッセージは正しく取得していますが、データは取得していません。