問題タブ [wm-copydata]
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# - ウィンドウ メッセージングを使用した Java と C# 間のアプリケーション間通信
Java アプリケーションから Window メッセージングを使用して C# アプリケーションと通信する必要があります。私のアプリケーションから、通信に使用されるメッセージを登録します。C# アプリケーションのウィンドウ ハンドルを取得し、メッセージを登録することができました。C# アプリケーションは、WM_COPYDATA 応答メッセージを送信してメッセージに応答します。WM_COPYDATA が受信されるポイントに到達できます。しかし、応答メッセージからメッセージの内容を抽出する方法がわかりません。
jniwrap および winpack ライブラリを使用して、Java アプリケーションから WM_COPYDATA メッセージからコンテンツを読み取るサンプル コードを入手できれば、本当に助かります。lParam の内容が Structure 型である場合、より役立ちます。
コードを編集して機密データを削除する必要がありました
次のコードは、他のアプリケーションのウィンドウ ハンドルをウィンドウ名で取得し、要求メッセージと応答メッセージを登録してから、内容が空の要求メッセージを送信します。
これは、アプリケーションのウィンドウのネイティブ プロシージャの代わりに使用されるカスタム ウィンドウ プロシージャです。
助けてください。前もって感謝します。
delphi - WM_COPYDATA文字列がターゲットアプリケーションに表示されない
Delphi2010の2つのアプリケーション間で情報を渡そうとしています。
過去に正常に使用したコードの簡略化されたバージョンを使用しています(送信者が送信が成功したことを知る必要がないため簡略化されています)受信した送信を2つの例に要約しました本質的に次のようなアプリケーション
送信
申し込みを受け取る
動作中のテストアプリケーションとコードを追加するアプリケーションの主な違いは、ターゲットアプリケーションで多くの余分なアクティビティが発生していることです。特に起動時に。
WMCopyDataプロシージャがまったく起動していないように見える理由について何か提案はありますか?
乾杯
ダン
delphi - 引用符がある場合とない場合のWM_COPYDATAは、異なる結果を生成します
WM_COPYDATAを使用して、次のようにDelphiXEでコマンドラインパラメータを別のアプリインスタンスに渡します。
文字列が引用符で囲まれている/追加されている場合、異なる結果が得られます。
#1が使用されている場合-文字列はクリーンになりますが、ファイル名にスペースを含めることができるため、引用符で囲まれていない場合は使用できません。
#2を使用して文字列を引用するか、何か(#3、#4)を追加すると、最終的に3つのパラメーターとして表示されます。
multithreading - 非表示のウィンドウを持つスレッドのスレッド メッセージ ループ?
SendMessage() および WM_COPYDATA メッセージを使用して外部プログラムとやり取りする外部アプリケーションとの通信専用のスレッドを持つ Delphi 6 アプリケーションがあります。したがって、SendMessage() 関数はスレッド ID ではなくウィンドウ ハンドルのみを受け入れるため、スレッド メッセージ キューが機能しないため、AllocateHWND() を使用して非表示のウィンドウを作成し、必要なサービスを提供します。よくわからないのは、スレッドの Execute() メソッドに何を入れるかです。
GetMessage() ループを使用するか、WaitFor*() 関数呼び出しを含むループを作成すると、スレッドがブロックされるため、スレッドの WndProc() が外部プログラムからの SendMessage() メッセージを処理しないと仮定します右?もしそうなら、不必要に CPU サイクルを消費せず、WM_QUIT メッセージを受信すると終了する Execute() ループに入れる正しいコードは何ですか? 必要に応じていつでも Sleep() でループを実行できますが、もっと良い方法があるかどうか疑問に思っています。
delphi - WM_COPYDATA を使用して dll から exe に情報を送信できません
record
1つのdllから1つのexeに送信しようとしています。
dll は私が作成した Outlook アドインで、exe はメイン アプリケーションです。
この例を使用して、exe から exeに正常に送信しましたrecord
が、dll から exe に同じことを実行しようとしても機能しません。
注:リンクを開いてください。そこに私が使用しているコードがあります。そのコードは、EXE 送信側アプリケーションと EXE 送信側アプリケーション用です。これは機能します。
送信者コードを dll 内に配置すると、この例は機能しなくなります。
解決策を提案できますか?
filter - DirectShowフィルターFillBuffer()呼び出しからPeekMessage / GetMessageを呼び出すのは安全ですか?
DSPACKコンポーネントライブラリを使用してDelphi6で記述されたDirectShowフィルターがあります。これは、私も書いた外部の協力プロセスからソースフレームを受け取るプッシュソースビデオフィルターです。
FiltersのFillBuffer()呼び出しを呼び出すワーカースレッドが作成されて実行されると、グラフが起動したときに、そのワーカースレッドから最初に行うことは、AllocateHWND()を使用して非表示のウィンドウを作成し、外部を含むWM_COPYDATAメッセージを処理することです。生成されたフレーム。スレッドが破棄される直前に、非表示のウィンドウを破棄します。つまり、非表示のウィンドウは、FillBuffer()を呼び出すワーカースレッドの実行コンテキストで作成および破棄されます。私の意図は、FillBuffer()がWM_COPYDATAまたはWM_QUITメッセージを待機するときにブロックすることです。外部の協力プロセスは、WM_COPYDATAメッセージと非表示のウィンドウのWndProcc()へのハンドルを使用して、フレームをフィルターに送信します。ピンのInactive()メソッドのオーバーライドにWM_QUITメッセージを投稿します(そのヒント@RomanRに感謝します)。
私の質問は、このシナリオでは、FillBuffer()呼び出しからPeekMessage()またはGetMessage()を呼び出しても安全ですか?または、DirectShowグラフの実行のコンテキストでこれが発生することから発生する可能性のある潜在的な落とし穴はありますか?また、ここでの私の全体的なアプローチに、考慮する必要のある欠陥がありますか?
delphi - Delphi コンポーネントから WM_COPYDATA をキャッチ
WM_COPYDATA によってアプリケーション間で文字列メッセージを送信するコンポーネントを作成しようとしています。WM_COPYDATA をトラップしたいのですが、うまくいきません:
Google をよく検索すると、wndproc を使用していくつかの参照が見つかりました。試してみましたが、うまくいきません。
助けてください、何が問題なのですか?
string - WM_COPYDATA SendMessage - 大きな文字列を送信できますか?
WM_COPYDATA
2 つのアプリケーション間で IPCを実装する必要があります。インターネット上にサンプルがあるようですが、それらはすべて 255 文字未満の文字列しか送信しません。
を使用して別のプロセスに大きな文字列 (1k 以上) を送信したいWM_COPYDATA
。出来ますか?制限は何ですか?文字列またはレコードの代わりにストリームを送信する必要がありますか?
どちらのアプリケーションも、Delphi 2010 を使用して私が開発したものです。
delphi - WM_COPYDATA:受信者はCOPYDATASTRUCTの内容を変更できますか?
Delphiの2つのWindowsアプリケーション間で通信しようとしています。送信者は、WM_COPYDATAを使用してSendMessageを介してコマンドを送信します。その部分は正常に機能しています。受信者が同じ呼び出しでいくつかの結果文字列を返信することは可能ですか?それは私にとって失敗していて、次のことが今起こっていることです。
送信者はWM_COPYDATAを使用して、ブロッキング呼び出しSendMessgeを使用して受信者にコマンドを送信します。
受信者はコマンドを処理し、COPYDATASTRUCTをいくつかの結果文字列で変更します。これらの結果文字列は、送信者に返送してイベントハンドラーを終了する必要があります。
受信者の「SendMessage」関数は戻りますが、COPYDATASTRUCTの内容は変更されていません。
どうやらWindowsのメッセージングメカニズムは2つのアプリケーション間でCOPYDATASTRUCTメモリを共有していません。代わりに、コピーを作成しています。
api - `WM_COPYDATA`を使用して別のウィンドウに文字列を渡す
vb6でこのコードを使用してデータを送信しています
コードを手伝ってくれませんか?私はこれを持っています
私が送るならHello
、私はそれを次のように受け取りますH e l l o