DDE poke を送受信できるサードパーティ製ツールを使用しています。Powerbuilder を使用してこれを複製する目的で、DDE スパイを使用してサードパーティの DDE サーバー エミュレーターとの間の通信を監視しています。私が知る限り、これはウォーム リンクを使用しています。openchannel 、続いて execremote を使ってみたのですが、呼び出しの種類が「execute」と記載されています。同様に、クライアントとエミュレーターが起動すると、登録済みサーバーのリストに表示されますが、私のアプリケーションはそうではありません/ user32.dll の使用を検討しましたが、DDE 呼び出しのほとんどが Powerbuilder で機能しないことは理解しています。 PB はコールバックをサポートしていません。この分野に関する情報の方向性を教えてくれる人はいますか? ..... もう少し微調整した後、ホットリンクを開こうとしました。アプリの「poke」ボタンをクリックすると、私の powerbuilder には hotlinkalarm イベントがトリガーされています。ソースなどは拾えますが、データがありません。また、指示を送り返す必要がありますが、respondremote が行うことは true または false を送信することだけです。DDE エミュレーターからの Delphi / Pascal コードがいくつかありますが、DDE 呼び出しは Powerbuilder 呼び出しとはかなり異なって見えます。
1 に答える
これに対する答えは見つかりましたか?あなたが何をしているのか完全に理解しているかどうかはわかりませんが、ここであなたが見なければならないと思うことがあります。
StartServerDDE関数は、アプリケーションをDDEサーバーとして確立します。DDE会話のハンドルとしてウィンドウを開いてから、ウィンドウイベントをコーディングする必要があることに注意してください(アプリケーションレベルのイベントは機能しません)。これが、登録済みサーバーが表示されなかった理由である可能性があります。DDEサーバーを終了するときにStopServerDDEを使用します。
要件に応じてデータの受信と送信を実行するためのDDEサーバーウィンドウの次のイベントのコードは、すべて次のとおりです。
RemoteExecイベント(クライアントが要求を送信しました)GetCommandDDEを使用して、クライアントが送信したコマンド文字列を取得しますGetCommandDDEOriginを使用して、コマンドを送信したクライアントアプリケーション名を確認します
RemoteSendイベント(クライアントがデータを送信しました)GetDataDDEを使用して、クライアントアプリケーションから(参照文字列を介して)データを取得しますGetDataDDEOriginを使用して、どのクライアントアプリがデータを送信したかを確認します
RemoteRequestイベント(クライアントがデータを要求しました)SetDataDDEを使用して、クライアントのDDEアプリケーションにデータを送信します
これがお役に立てば幸いです。