問題タブ [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.
delphi - 別のアプリでコンテキスト メニュー項目をプログラムで選択する方法は?
ターゲット アプリは Delphi (.NET ではなく win32) で記述されており、クローズド ソースです。
呼び出したいアクションは Copy と呼ばれますが、明らかなキーボード ショートカットはありません。(Ctrl+Insert は間違ったことを行い、Ctrl+C は何もしません)
ターゲットを見つけてHWND
、コンテキスト メニューを開くように説得できます ( WM_RBUTTONDOWN/UP
notに応答しますWM_CONTEXTMENU
)。メニューからHWND
メニュー ハンドルを取得してMN_GETHMENU
、目的のメニュー項目を見つけることもできます。アイテムを「選択」する方法の詳細がわかりません。メニューが「モードレス」であることは役に立ちません。それHWND
は所有されていないので、多くの非表示のTPUtilWindow
ウィンドウのどれが本当の所有者なのかわかりませんWM_COMMAND
。
あらゆる種類のハッキングが容易になることは確かですが、ターゲット プロセスにコードを挿入することは避けたいと思います。
回答は任意の言語で受け入れられます。
c++ - 開いているウィンドウを台無しにしないメッセージ ポンプが必要です
私のアプリケーション (私が取り組んでいるインストーラーのブートストラップ アプリケーションは、いくつかの他のアプリケーション (私のインストーラーと私のインストーラーの前提条件のためのサード パーティのインストーラー) を起動し、それらが完了するのを待つ必要があります。GUI が画面の更新を行えるようにするためにアプリが完了するのを待っている間、アイドル ループ処理に関する Visual Studio ドキュメントの「MFC 互換」の例をガイドラインとして使用して、待機ループにメッセージ ポンプを配置しました。 -派生クラス) は次のとおりです。
私が抱えている問題は、ある時点で、このメッセージ ポンプが、このコードの実行時に開いていたウィンドウとウィンドウのメニュー ハンドルを解放しているように見えることです。私はデバッガーでウォークスルーを行いましたが、if (!PumpMessage()) ステートメントの本体に入ることは一度もなかったので、ここで何が起こってウィンドウとメニューハンドルが移動するのかわかりません南。メッセージ ポンプがない場合、待機ループの実行中に GUI が更新できないことを除いて、すべて正常に動作します。
これを機能させる方法について誰かアイデアがありますか? または、bWait が TRUE の場合にワーカー スレッドを起動して 2 番目のアプリを起動したいのですが、これまでスレッドで何もしたことがないので、同期の問題を発生させずに実行する方法についてアドバイスが必要です。 (どちらの場合も、コード例は大歓迎です。)
sql-server - SQL サービス ブローカーの機能に関する質問
私は野心的な Web アプリケーション プロジェクトに取り組んでいる初心者の Web 開発者です。
それで、いくつかの調査を行った後、SQL Service Broker について知りました。何とか使えそうですが、よくわかりません。それを学ぶには誰かが多くの時間を費やす必要があるので、それが自分のニーズに合っていることを確認したかった.
Web サイトのユーザーが Web サイトにテキストを送信できるシステムを実装する必要があります。このメッセージ ストリームは冗長で、FIFO 方式で処理する必要があります。ストリームの反対側では、別のユーザー グループがメッセージを処理します。
ここで、この最後のユーザー グループの 1 人が読んでいるメッセージは、他の誰も同時に読むことができないようにロックする必要があります。その後、ユーザーはメッセージを処理するかどうかを決定できます。彼がメッセージを処理することを決定した場合にのみ、メッセージをキューから削除できます。彼がメッセージを処理したくないと判断した場合、別のユーザーがそれを読んで決定できるように、メッセージをキューに戻す必要があります (キューの最後に、または少なくとも最高の優先順位で)。 .
これは SQL Service Broker で実装できるものですか? 私は間違った道を進んでいますか?
ありがとうございました!
windows - メッセージタイプが送信されたか投稿されたかを確認するにはどうすればよいですか?
一部のメッセージタイプはウィンドウプロシージャに直接送信され、他のタイプはスレッドのメッセージキューに送信されることを認識していますが、メッセージが送信または投稿されるかどうかを判断する方法が見つかりません。
MSDNは半分役に立ちます。それは何が起こっているのかを説明しましたが、それが与える例はおそらく網羅的ではありません。
送信されたメッセージと投稿されたメッセージの明確なリスト、またはメッセージのタイプを決定する方法はありますか?
vb.net - Matlab、VB6、および VB.NET プログラム間でメッセージを送信する最も簡単な方法
VB6 プログラムから VB.NET、VB6、および Matlab プログラムの混合物への一連のデータ取得および分析ルーチンをアップグレードしています。システムをモジュラー (個別の EXE) に保ちたいので、1 つの大規模なアプリケーションを常にアップグレードする必要なく、専用のスタンドアロン分析プログラムを簡単に作成できます。すべてのプログラムが VB6 で記述されている場合、MBInterProcess を使用して EXE 間でメッセージを送信しました。残念ながら、この ActiveX を Matlab または VB.NET 内で使用してメッセージを受信することはできません。採用できる最も単純な文字列メッセージ パッシング システム (パイプ、登録メッセージなど) は何かを考えています。現在、新しいファイルが特定のフォルダーに書き込まれたかどうかを確認するためにポーリングしています。これは最善の解決策とは言えません。私たちの理想的なソリューションは、Windows のニュアンスを学習するために多大な時間を費やす必要がなく (私たちは生物学者であり、フルタイムのプログラマーではありません)、WinXP と 64 ビット バージョンの Windows の両方で動作します。
クエリに応答して、MBInterProcess ActiveX コントロールを持つ VB6 プログラム内に Matlab セッション全体をラップしました。それはうまくいきますが、私たちにとっては素晴らしい解決策ではありません。なぜなら、それは私たちを永遠に WinXP に縛り付けてしまうからです (もちろん、Matlab の 64 ビット バージョンを使用できなくなるでしょう)。最新バージョンの Matlab (2009a) は .NET 関数に直接アクセスできるため、.NET ライブラリを使用してプログラム間でパイプ (または類似のもの) を実装することが 1 つの解決策であると想定しています。MBInterProcess ActiveX の洗練された単純な構文を再作成し、そのプログラムの最上位の Windows 名を使用してメッセージをリッスンし、特定の Matlab m ファイルまたは VB.NET 関数を呼び出すコードを用意します。引数として文字列データ (ファイル名など)。
c# - イベントリスナーの実行を待たずにイベントを発生させるにはどうすればよいですか?
.NET(C#)のイベントについて質問があります。バックグラウンドタスクを実行していて、タスクの完了やファイルのコピーの終了など、何かが発生したことをメインスレッドまたはコントローラークラスに通知したいといういくつかの状況でコードを作成する必要がありましたが、メインスレッドのデリゲートがイベントを処理するのをバックグラウンドタスクが待機するようにします。
メッセージパッシングのようなことをしたい:メッセージを送信するが、誰がそれをどうするかを気にする。
例えば:
クラスは、複数のプロセスを順番に処理するように作成されています。各プロセスはバックグラウンドスレッドで実行する必要があります。作業が完了すると、イベントが発生し、それが完了したことをコントローラーに通知します(たとえば、OnCompleted()メソッドを使用)
問題は、コントローラーのイベントハンドラーを使用して後続のプロセスを開始する場合、すべてのプロセスが完了するまで、前のプロセスのOnCompleteメソッドが呼び出しスタックにとどまる(実行が終了しない)ことです。
そのような状況で、バックグラウンドタスクは、イベント発生メソッドをスタックに保持せずに作業が完了したことをコントローラークラスにどのように通知できますか?
例2:バックアッププログラム。
バックグラウンドスレッドが実行され、各ファイルが宛先にコピーされます。バックグラウンドは、コピーされた最後のファイルをUIに通知する必要がありますが、UIが更新されるのを待つ必要はありません。代わりに、「ところで、ここにいくつかの情報があります。それでは、仕事に戻りましょう」と言いたいだけです。イベントリスナーは、イベントレイザーの処理をブロックしてはなりません。
windows - HWND_BROADCAST に送信されたメッセージは他のデスクトップに送信されますか?
私はどのように機能するかの詳細のいくつかを決定しようとしてHWND_BROADCAST
います. 残念ながら、MSDN にはこの値に関する特定のページがありません。SendMessage
やなど、他のいくつかの記事で言及されているだけPostMessage
です。
私が特に知りたいのは、送信されたメッセージがHWND_BROADCAST
、同じウィンドウ ステーション内の他のデスクトップに関連付けられたウィンドウで受信されるかどうかです。ドキュメントには、メッセージは「システム内のすべての最上位ウィンドウ」に送信されると書かれていますが、厳密にはそうではありません。たとえば、他のログオン セッション (ターミナル サーバーなど) で Windows にアクセスすることはないと確信しています。私の推測では、それらは少なくとも呼び出しプロセスのウィンドウ ステーションに限定されていますが、呼び出しスレッドのデスクトップにも限定されているかどうかはわかりません (各スレッドは単一のデスクトップに関連付けられています)。
最悪の場合、これを経験的にテストするコードを書きに行くことができますが、たまたま答えを知っている人はいますか?
java - SpringWebflowユニットテストでのmessages.propertiesの設定
Spring Web Flow 2.0.7を使用していて、単体テストのセットアップを開始しました。クラスパスにflowxmlファイルとmessages.propertiesファイルを含むflowsディレクトリがあります。
正常に読み込まれていますが、フローのmessages.propertiesファイルが自動的に取得されていないようです。したがって、指定されたコードのメッセージを解決できないため、検証ユニットテストが失敗します。
例外の関連部分は次のとおりです。
これは、messages.propertiesで解決されたコードを使用してエラーメッセージを生成する、かなり一般的なシナリオのようです。それで...messages.propertiesファイルをロードするための推奨される方法は何ですか?
mfc - MFCメッセージを別のオブジェクトにリダイレクトする方法は?
CWndから派生したクラスのインスタンスでは、可能なメッセージごとに個別のハンドラーとメッセージマッピングを記述せずに、すべてのMFCメッセージを別のオブジェクトに転送(リダイレクト)することは可能ですか?具体的には、未処理のWM_メッセージをすべて別のオブジェクトに転送したいと思います。これが不可能な場合、オブジェクトが他のオブジェクト内で発生するイベントをリッスンすることは可能ですか?それが私の質問を明確にするのに役立つならば、私は詳細を提供することができます。
ありがとう。
visual-c++ - Visual C++: コンパイル時のメッセージをコードに埋め込んで表示する方法は?
そのコードがコンパイルされているコンパイル時に表示されるコードにメッセージを埋め込む方法はありますか? メッセージは本質的に診断用であり、コンパイル プロセスを変更または中止するべきではありません。
(免責事項: 私はこの質問に対する答えを知っています。スタック オーバーフローで質問されていませんでした。ここのナレッジ ベースへの追加に役立つと思います。)