問題タブ [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.

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

c# - wpf アプリケーションで Windows シャットダウン イベントをキャッチする

閉じるときにデータを保存する必要がある ac# WPF アプリケーションがあります。Window Closing/Closed イベントは、ユーザーがプログラムを閉じると正常に動作しますが、ユーザーがコンピューターをログオフまたはシャットダウンすると呼び出されません。

winforms プログラムでこのイベントをキャッチする方法を見つけました ( hereおよびhere )。しかし、WPF アプリケーションでこれを実現する方法がわかりません。

プログラムが終了する準備ができるまでシャットダウンを停止しようとしています

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

c# - C# 初心者 - WndProc を追加したい

みなさん、私はC#が初めてなので、助けてください...

メッセージを処理するためにWndProcを追加したいのですが、プロパティを調べましたが、関数名を表示するサンダーボルトが表示されないので、好きなものを追加できます。インターネットを検索すると、WndProc が次のように表示されます。

入力するのではなく、生成してもらいたいですか?

0 投票する
5 に答える
5995 参照

c++ - クラスへのポインターとして lparam を送信し、WndProc() で使用します。

私はこの抽象コードを持っています:CreateWindowEx()でlParam(最後のパラメータ)を使用して、メインの先頭で宣言されたクラスへのポインタを保存したい-SaveArr。次に、関数 WndProc で使用したいと思います。最初はグローバル配列を作成しましたが、どこでも使用できましたが、C ++に関する限り「賢く」はないため、少しアップグレードしようとしています。

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

c# - WndProc、すべてのボタンの押下をキャッチする方法は?

バーコード リーダーを備えた .NET CF3.5 WM6.1 デバイス用のアプリケーションを開発しており、デバイスのすべてのボタン (F1、1、スキャナー ボタン) のクリックをキャッチしたいと考えています。特にバーコードのボタン押下をキャッチする方法に興味があります。小さなアプリを作成しましたが、キャッチできる唯一のアクションはフォーム クローズです。誰かがこのコードで私を助けてくれますか? 私が逃したものは何ですか?

ありがとう、ルーカス

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

c# - C#でのタスクバーボタンの右クリック/左クリックの処理

フォーム(タスクバーにタスクバーボタンが表示されている)があり、このタスクバーボタンの左/右クリックを処理したい。私はどこでも検索しましたが、正しい答えを見つけることができました。スタックオーバーフローにもいくつかの関連クエリが投稿されています:

  1. タスクバーの左クリックでフォームを最小化するためにC#でwndprocを使用する

  2. タスクバーの右クリックを検出する方法

しかし、誰もそれを「どうやって」するのに適切な答えを与えていないようですか?

それを行うためのポインタやコードスニペットはありますか?

タスクバーアプリボタンについて話していることに注意してください(Systrayメニューまたは通知領域と混同しないでください)。私はこの混乱をいくつかの場所で見たので、それを明確に述べました。

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

vb.net - WM_LBUTTONDOWNSendMessageから位置を取得

WM_LBUTTONDOWNがvb.netで送信されるときに、Paramsからx、yの位置を取得したいと思います。

パラメータを作成するためにこれを取得しましたが、そこから位置を取得するにはどうすればよいですか。

私の機能:

更新:これを試したところ、完全に機能します。

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

c# - C# p/キー コンボ ALT + TAB の RegisterHotKey を呼び出す (0 を返す)

次のコードを使用して、C# アプリケーションで ALT + TAB キー シーケンスをインターセプトしています。

関連するスニペット:

2 番目のスニペットでは、ret はほとんど false ですが、MOD_ALT (0x01) を MOD_SHIFT (0x04) に置き換えると、ret が true になり、ホットキー インターセプトが機能します。

私がウェブで見た多くの例は、それらが機能すると述べているため、なぜこれが事実なのか疑問に思っていました。

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

c# - ホットキーメッセージを処理するときにC#WinFormsWndProcメソッドで実際に何が起こっているのかを理解しようとしています

私は、よく説明されているGlobalAddAtomメソッドとRegisterHotKey PInvokeメソッドを使用して、いくつかのホットキーを登録するC#WinFormsアプリケーションに取り組んでいます。プログラムは最小化モードで起動し、システムトレイで実行されます。ホットキーメッセージの1つが受信されるたびに、プログラムはどのキーが押されたかに関するデータをキャプチャし、処理のために別のオブジェクトに渡します。これはしばらくの間比較的うまく機能しましたが、時々奇妙な振る舞いがあります。同じメッセージが複数回処理されたり、一部のメッセージが完全に欠落したりするようなものです。

広範なログを追加した後、ユーザーがホットキーの組み合わせ(たとえば、Win + C)を通常より少し長く押し続けるか、単に押し続けると、メッセージループで新しいホットキーメッセージが受信されていることがわかりました。前のメッセージの処理が完了する前。

今、私が見ているように、メッセージはUIスレッドで受信され(非表示になっている場合でも)、別のクラスのインスタンスへのブロッキング呼び出しによって処理されます。それが本当なら、現在最初のメッセージを処理している同じ関数に別のメッセージをどのように入れることができますか?これは、Win32の理解が不足しているために、頭を悩ませているところです。

2番目のメッセージは別のスレッドで受信されているように見えます。しかし、それが本当なら、それは私の処理クラスのどのインスタンスを呼び出していますか?

これを理解する助けがあれば大歓迎です!

簡単な例を次に示します。このコード...

...このような出力を生成します。

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

.net - パネルのオーバーロードされた WndProc で WM_KEYDOWN メッセージを受信して​​いませんか?

他のタイプのメッセージを受信して​​いるので、オーバーロードされたメソッドが呼び出されていることがわかります。

入力を受け取ることができるように、パネルにフォーカスを与える必要があるという話を検索して見つけた唯一の情報です。ただし、その解決策は何の役にも立ちませんでした。(http://www.dotnet247.com/247reference/msgs/44/221762.aspx)

どんな助けでも大歓迎です:)

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

c# - モーダル プログレス ダイアログが表示されている間に "Application.DoEvents" を呼び出しても問題ありませんか?

非同期に実行できない長いプロセスがあるため、ファイルをコピーするときのエクスプローラーと同じように、進行状況ダイアログが表示されます。ダイアログをモーダルに表示し、操作を実行し (抽象化するためにファイルのコピーと呼びます)、進行状況ダイアログを更新し、Application.DoEvents() でメッセージを送り込んで、アプリケーションのメイン フレームのペイントと応答性を維持します。

ダイアログはモーダルであるため、ユーザーは監視またはキャンセル以外のことはできません。つまり、メニュー項目を選択したり、ボタンをクリックしたりすることはできません。

私は常に、Application.DoEvents は非常に邪悪であると信じてきました。再入可能にするつもりのないコードを再入力できるからです。しかし、この場合、進行状況ダイアログはモーダルであるため、これが悪いまたは危険な解決策である理由がわかりません。

私は何かを見落としていますか、それとも Application.DoEvents を使用してメッセージを送り込むことは、モーダル ダイアログを使用する正当な行為ですか?