問題タブ [windows-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.
c++ - WM_DEVICECHANGEメッセージはWndProcに送信されません-C++
WM_DEVICECHANGE
私のアプリケーションは、 Windowsメッセージ を処理するためのウィンドウを作成します。WndProc
アプリケーションがキーボードイベントをポーリングする関数を呼び出すまで、何度も呼び出されますが、何らかの理由でUSBデバイスを取り外したり挿入したりしても呼び出されません。
これは私のUSBデバイスのGUIDです。私はそれが正しいと確信しています:
これが私のウィンドウの作成方法です。
これは私がデバイス通知に登録する方法です:
私のWndProc
関数は次のようになります。
誰かが私が間違っていることを知っていますか?ありがとう。
c - 文字セットの何が問題になっていますか(Win32 API)
現在、このチュートリアルを使用してWin32を学習していますが、表示される文字に苦労しています。
たとえば、作成時にウィンドウにメニューを追加する次のコードを見てください。
これは、メッセージループから受信したWindowsメッセージを処理する関数内のswitch
ブロック内にあります。WndProc
表示される各文字列:
コードページが適切ではなかったように、実行時に小さな正方形として表示されるため、読み取り不能です。チュートリアルを実行すると、すべての文字列が正しく表示されます。私は、チュートリアルが正しいことを理解するのに役立つと言っていることに正確に固執する傾向があり、その教育法は優れています。ともかく!...
私が使用しているもの:
- Microsoft VisualStudio2008チームシステム;
- RDPを使用するMicrosoftWindowsServer 2003;
- ローカルOSはWindowsVistaUltimateです。
誰かがそれについての手がかりを持っていますか?
c++ - WM_APPを回避する方法
私はCFrameWndラッパーを書いていますが、ヘッダーファイルに次の行があります。
これは良い習慣ですか?このラッパーのユーザーは、この特定の番号(WM_APP + 100)を使用しないことを覚えておく必要がありますか?
c - Win32: この例でメッセージ ループが正しく動作しない原因は何ですか?
最近、Win32 でモードレス ダイアログを使用したい状況に遭遇しました。
Win32: ツールバー ダイアログがフォーカスされず、メイン ウィンドウの処理が遅くなる!?
そして、これが私のメッセージループであることがわかりました:
実際、このメッセージ ループは、モーダル ダイアログが独自のメッセージ ループを処理するため、モーダル ダイアログで完全に正常に動作するため、モードレス ダイアログがない限り正常に動作します。hWnd
のインスタンスを置き換えたとき、モードレス ダイアログは問題なく動作しましたNULL
。違いはわかりませんが、特定のウィンドウではなくメッセージが表示されるようです。
このメッセージ ループが正しく動作しない原因を誰か説明できますか?
これとして:
完璧に動作します!
c++ - Windows Messaging - 別の API から発信された呼び出しをトラップする
シナリオ:
サードパーティの C++ SDK を DLL としてラップして、組織内の他の開発者がこの機能を独自のアプリ (.net、delphi など) に簡単に統合できるようにする作業に取り組んでいます。
基になるシステムは、Windows メッセージを送信して、システムで発生するイベントを通知します。これらのイベントは、システムの状態と次に何ができるかを示す可能性があるため、対処する必要があります。
質問:
私たちが採用しているアプローチ (つまり、サードパーティ SDK をラップする DLL) のコンテキスト内でこれらのメッセージを処理する最善の方法は何でしょうか? 頭に浮かぶいくつかのアイデア:
- DLL を使用するアプリケーションでメッセージをトラップし、処理のために関数呼び出しを介して DLL に戻します。呼び出し元のアプリケーションがこれらのメッセージをトラップすることは可能ですか?
- 基になるシステムからのこれらのメッセージを処理し、独自のカスタム メッセージをバブルアップするメッセージ ポンプを実装する DLL 内からスレッドを生成しますか?
SDK 用に指定されたすべてのサンプル コードは、メッセージ ポンプを実装し、アプリケーションのコンテキスト内でメッセージを処理する単一の Win32 アプリを使用します。
ネイティブの Win32 を使用して Windows 開発を行ってから何年も経ちましたが、アドバイスをいただければ幸いです。
windows - フォームの中央で[Ctrl+マウスの左クリック]を模倣するか、別のプログラムを開いて単語を入力する方法は?
Babylon 辞書と他のいくつかの辞書では、任意の Windows プログラムで任意の単語をクリックすると、カーソルの下にある単語が自動的に認識され、インストールされている辞書でその単語を検索しているときに、すぐに辞書ウィンドウを開くことができます。一方、辞書を開いて単語を入力し、Enter キーを押すと、結果は同じになります。
たとえば「Automaton」という単語を含むテキスト ラベルを含む Delphi フォームがあります。
私の質問は:
手動で入力して Enter キーを押したかのように、Delphi アプリケーションから単語を辞書ウィンドウに直接送信する方法は?
最善の解決策は、Windows メカニズムを介してメッセージを送信することですが、それが複雑すぎる場合は、別の解決策があります。2 番目の答え: 説明したように、[Ctrl+マウスの左] クリックをモデル化する必要があります。この単語は、フォーム [私の Delphi アプリケーションの画面上のビジュアル ラベル] に表示されます。正確には、このラベルの中央のピクセルに表示されます。
Delphi で何かを行う方法について、親切にアドバイスをいただけますか?
** 編集: AppActivate の問題は次のとおりです。Babylon dict には、トレイに収まるデーモン部分があります。タスク マネージャーでは、テキストを入力する必要がある実際のウィンドウも「Babylon」という名前になっています。したがって、AppActivate('Babylon') は、アプリケーションの非表示部分を前面に表示しようとします。
ウィンドウ ハンドルまたはアプリケーションの実際のビジュアル部分を特定する方法について何か提案はありますか? タスクマネージャーでは、視覚部分と非視覚部分の両方が「バビロン」と名付けられていることを繰り返します。
.net - Windows CE 上の .NET CF - システム メッセージのフィルタリングに関する問題
ユーザーが画面に触れたことを示すすべての Windows メッセージを取得しようとしています。無効にすると、ボタンを除くすべての場所で機能します。無効なコントロールをクリックしても、アプリケーションは何のメッセージも表示しないようです。
メッセージのフィルタリングに OpenNetCF Application2 クラスを使用しています。
Application2.AddMessageFilter(Device.PowerManager);
Application2.Run(new MainForm());
PowerManager クラスには、次のメソッドが含まれています (IMessageFilter インターフェイスで必要)。
ログ ファイルには、無効化されたボタンをクリックしても Windows メッセージが表示されません。どうすればそれが可能で、どうすればこのメッセージを受け取ることができるのだろうと思っています。
winapi - マウスの状態 winapi
C++でwinapiを使用してマウスの状態(位置、ボタンの状態)を取得する方法はありますか? Windows メッセージ (WM_MOUSEMOVE、WM_LBUTTONDOWN など) を使用したくありません。
ありがとうございました!
mfc - Windowsメッセージを生成した人を見つける方法
非常に大規模で複雑なMFCアプリケーションがあります。何らかの理由で、アプリケーションを実行するための特定のモードは、ウィンドウへのWM_SIZEメッセージの生成です。それは起こってはならないことであり、パフォーマンスを殺しています。メッセージが処理されているのがわかります。 コードのどこで、ウィンドウメッセージを生成しているのかをどのように見つけることができますか?
注:これは、パフォーマンス監視ツールをアプリケーションに接続している場合に発生する傾向があります。したがって、それを実行するのはサードパーティのツールである可能性があります。
ただし、これはこの1つの特定の操作モードでのみ発生するため、ある種の奇妙な相互作用である可能性があります。
windows - ウィンドウがフォアグラウンドになったときにトリガーされるウィンドウ メッセージは何ですか?
アプリケーション ウィンドウがバックグラウンドからフォアグラウンド (または非表示/最小化から表示/最大化) に移行したときに、どのウィンドウ メッセージ (wm_xyz) がトリガーされますか?