問題タブ [wndproc]
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.
winapi - loword==hiword==-1 の WM_SIZE?
Windows 7 で私の小さなグラフィック アプリケーションを試したところ、loword==hiword== -1 の WM_SIZE イベントが発生しました。これは無視しても問題ありませんか、それとも特別な意味がありますか? Windows 7 でのみ、XP/Vista でこのようなサイズを見たことはありません。ドキュメントでは、hiword/loword が何であるかについてはあまり説明されていないため、-1 に特別な意味があるのではないかと思います。(一般的にマイナスをチェックする必要がありますか、それとも -1 だけですか?)
c# - VB6 と C# の間で Windows メッセージを送受信するにはどうすればよいですか?
C# で以下のコードを使用してメッセージを受信できることはわかっていますが、vb6 に送信し、vb6 で受信し、vb6 から送信するにはどうすればよいですか?
winapi - Win32、WndProc、および親子ウィンドウ
Win32APIを使用して複数のウィンドウを作成するCコードで開発しています。createWindow
親ウィンドウと子ウィンドウを作成するために2回使用しました。メッセージループがあります
しかしWND_Proc
、ウィンドウごとに2回ではなく、1回だけ呼び出される関数を取得します。
私は何が間違っているのですか?
winapi - CreateWindow()[Win32 API]:親ウィンドウのみが取得します
質問をしたところ、質問がはっきりしないとのコメントがありましたので、こちらが新しい質問です。
WIN32APIを使用して複数のウィンドウでアプリケーションを作成しようとしています。2つのウィンドウを作成しました。1つは親の子です。次に、メッセージループが発生しますが、残念ながら、親のWndProcのみがメッセージを受け取り、子は受け取りません。-つまり、wndProcは2回ではなく1回だけ呼び出されます。(それは期待される動作ですか?)
また、子ウィンドウ用に別のWndProcChild関数を作成し、独自のクラスを登録しようとしましたが、それでも役に立ちませんでした。
以下はコードの抜粋です(子ウィンドウの宣言とメッセージループのみ)
私はWin32の初心者なので、優しくしてください...ありがとう、ダン
達成したいことをもう一度説明します。WM_KEYDOWNメッセージを2回処理します。1回は親ウィンドウで、もう1回は子ウィンドウで処理します。私は実際にはそれらが親子である必要はありません。2つの異なるwndProcsを作成する手間が省けると思っただけです。
windows - あるウィンドウから別のウィンドウへの Win32 API WndProc キー メッセージの転送
私は C++ で Windows Mobile 用に開発していますが、問題が発生しています。ウィンドウ クラスを追加し、その中にキーボード入力をWndProc
実装しました。問題は、間違ったコードを取得していて、func キーなどのキーを間違って識別していることです。さらに悪いことに、取得している値 (メッセージwParam
の) が、WM_KEYDOWN
ここにある 2 台の電話の間で異なる値になっていることです。テスト用 - 他の電話で何が起こるかは誰にもわかりません。
何年も遊んだ後、定義済みの「EDIT」クラスからウィンドウを作成するだけで、実際に入力が正しく取得されることがわかりました(文字/キーに関して)。
したがって、問題は電話ではなく、メッセージを取得するモードにあるはずです (win32 の初心者で、知識がなくてすみません)。入力モードをいじってみましたが、EM_NUMBERS などを使用してウィンドウにメッセージを送信すると、常に失敗しました。
だから私がやりたいことは(私は提案を受け付けていますが)、どういうわけか隠し編集ウィンドウから文字を取得し、それらを私のウィンドウに転送することです。(ただし、ウィンドウにフォーカスを当てる必要があるため、異なるメッセージに正しく反応するWM_KEYDOWN
など)
これを行う方法はありますか?
この問題について私が質問するのはこれで 3 回目です。これまでに助けようとしたすべての人に永遠に感謝しています (ただし、私の問題を解決できた場合はさらに感謝します)。
関連するコードの抜粋は次のとおりです。
履修登録 :
WNDPROC の抜粋:
windows - WndProcアドレスの検索
(別のプロセスのウィンドウの)WndProcのアドレスを見つけるにはどうすればよいですか。DLLを挿入し、GetClassInfoEx()、GetWindowLong()、またはGetWindowLongPtr()のいずれかを使用してDLLを見つけようとしても、常に0xffff08edのような値を取得します。これは、実行可能アドレスではありません。これはMSDNによると、「...ウィンドウプロシージャのアドレス、またはウィンドウプロシージャのアドレスを表すハンドル」です。
残念ながら、それでは十分ではありません。実際のアドレスが必要です。Spy ++はほとんどの場合正しく機能します(ただし、それでも失敗することがあります)。だからそれは可能であるはずです。ありがとう。
[編集:]私の小さな問題に超高速で正しい解決策を提供してくれたChris Beckeに感謝します!
c# - Windowsフォームなしでプラグアンドプレイデバイス通知を受信する方法
Windowsメッセージをキャッチして、デバイスが接続または削除されたかどうかを通知できるクラスライブラリを作成しようとしています。通常、Windowsフォームアプリでは、WndProcメソッドをオーバーライドするだけですが、この場合はWndProcメソッドはありません。メッセージを取得する別の方法はありますか?
windows - (wndprocを使用して)WM_KEYDOWNメッセージを送信した場合、コンピューターはWM_KEYUPを送信するまでキーを押し続けますか?
しばらくの間、プログラムでキーボードのキーを押したままにする解決策を探しています(何回かはわかりません)。
WM_KEYDOWNメッセージを送信すると、WM_KEYUPが送信されるまでキーが押されたままになると思いますが、よくわかりません。
私はそれをテストします。しかし、私は行く必要があり、私は多くの時間がありません。誰かがすでにこれをテストしたかどうかを確認したいと思います。
これに関連して、私が投稿した別の質問があります。
仮想キーボードを作りたい。WM_KEYDOWNを現在アクティブなウィンドウまたはHWND_BROADCASTに送信する必要がありますか?
windows - 仮想キーボードを作りたい。WM_KEYDOWNを現在アクティブなウィンドウまたはHWND_BROADCASTに送信する必要がありますか?
キーボードをシミュレートするアプリを作っています。WM_KEYDOWNをウィンドウに送信して実行しますが、メッセージの送信先がわかりません。現在アクティブなウィンドウまたはHWND_BROADCASTに?
これに関連して、私が投稿した別の質問があります。
(wndprocを使用して)WM_KEYDOWNメッセージを送信した場合、コンピューターはWM_KEYUPを送信するまでキーを押し続けますか?
delphi - Delphi - スレッド内の WndProc() は呼び出されませんでした
メイン VCL スレッドのコンテキストで実行すると、問題なく動作するコードがありました。このコードは、SendMessage() 呼び出しを処理するために独自の WndProc() を割り当てました。SendMessage() トラフィックがメインの VCL スレッドに悪影響を及ぼしているのではないかと懸念しているため、バックグラウンド スレッドに移動しようとしています。そこで、スレッドの Execute() メソッドに WndProc() を割り当てて、スレッドの実行コンテキストに WndProc() が確実に存在するようにすることのみを目的として、ワーカー スレッドを作成しました。WndProc() は、受信した SendMessage() 呼び出しを処理します。問題は、ワーカー スレッドの WndProc() メソッドがトリガーされないことです。
doExecute() は、Delphi の TThread の子孫である私の TThreadExtended クラスによって呼び出されるテンプレート メソッドの一部であることに注意してください。TThreadExtended は、スレッドの Execute() メソッドを実装し、ループ内で doExecute() を呼び出します。トリプルチェックしたところ、doExecute() が繰り返し呼び出されています。また、WndProc() を作成した直後に PeekMessage() を呼び出して、Windows がスレッドのメッセージ キューを確実に作成するようにしていることにも注意してください。ただし、WndProc() メソッドがトリガーされないため、私が行っていることは間違っています。以下にコードを示します。
ありがとう、ロバート