WM_COPYDATAでdllからexeに情報を送信できません

私は1つのDLLから1つのexeにレコードを送信しようとしています。

DLLは私が書いたOutlookアドインです、exeは私の主なアプリケーションです。

私はこの例を使用してレコードを送信しました> exeからexeへ、しかし私がexeにdllから同じことをしようとすると動作しません。

注:リンクを開いて、使用しているコードを見つけてください。そのコードは、EXE送信者アプリケーションとEXE送信者アプリケーション用です。これは機能します。

送信者コードをdllの中に入れると、この例はもう機能しません。

あなたは解決策を提案できますか?

2
レコード、私は質問を更新しました。
追加された 著者 LaBracca,
私が使用したコードを見つけることができるように私が使用した例へのリンクを貼っています。その例はEXEからEXEです。私はEXEにDLLをして、私はメッセージを送信することができません。元の例と私が行ったこととの唯一の違いは、EXEからEXEへの変更がEXEからDLLに変更されたため、解決策のアイデアの一部がトリガされる可能性があります。これが私の質問がこのように意図的に書かれた理由です。
追加された 著者 LaBracca,
-1。 「うまくいかない」とはどういう意味ですか?
追加された 著者 Rob Kennedy,
あなたは「メッセージを送信できません」ですか? SendMessage が失敗することを意味しますか?失敗した場合は、エラーコードを返します。あなたはそれをチェックしましたか?正しいウィンドウハンドルが見つかりましたか?あなたはデバッガでコードをステップ実行しました。すべての計算と関数呼び出しは、すべてのステップで、あらかじめ知っていた値を正確に返しています。あなたがそれをするまで、あなたはこの問題の作業を終えていません。あなたは何が起こると思いますか、代わりに何が起こったのですか?
追加された 著者 Rob Kennedy,
動作しないコードを投稿してください。レコードの宣言は何の助けにもなりません。
追加された 著者 Warren P,
TRecord とは何ですか?
追加された 著者 Andreas Rejbrand,
WM_COPYDATA を送信するコードとそれを受信するコードを表示する必要があります。また、「うまくいかない」ということを説明する必要があります。
追加された 著者 David Heffernan,
私は簡単な文字列で始めるでしょう。あなたが「こんにちは、世界!」を送ることができないなら、その記録に関する議論は無関係です。
追加された 著者 Chris Thornton,

1 答え

(見た目に残っている)文字列で動作させることができると仮定すると、あなたのレコードを単に文字列(CSV、おそらく〜のような奇妙な区切り文字を使用)にシリアル化し、文字列(PAnsiCharまたはPWideChar)もう一方の端のレコードに逆シリアル化し直します。これはあなたが望むものほどエレガントではありませんが、確かに、積極的に動作します。

0
追加された
返信いただきありがとうございますが、私の問題はデータを送信していないので、exeファイルからdllが機能しないのはなぜですか。
追加された 著者 LaBracca,
レコードは string [n] で非常に簡単です。 SizeOf()を使うだけでいいです。
追加された 著者 David Heffernan,