1

私は2つのVC++アプリケーションを実行していますが、どちらも私が作成したものです。これらは同じEXEの2つのインスタンスではありません。それらは完全に異なるプロジェクトです。文字列を一方から他方に送信したい。

最初のアプリケーションには次のコードがあります。

HWND tgtHwnd = FindWindow(_T("Target_Class"), _T("Target_Name"));
SendMessage(tgtHwnd, 1234, 0, (LPARAM)L"Hello");

2つ目は、このメッセージを処理するための次のコードを持っています。

// snippet of the WndProc function

case 1234:
  LPCWSTR myText = (LPCWSTR)lParam;
  MessageBox(NULL, myText, _T("My Text"), 0);

// End snippet

それを実行してメッセージを渡すと、受信側のアプリケーションでアクセス違反エラーが発生します。

ここに画像の説明を入力してください

LPCWSTRとLPARAMとの間の変換を検索しようとしましたが、役立つ例が見つかりませんでした。BadPtrエラーとさらに混同されます。送信されたポインタが2番目のプロセスなどで使用できない可能性があることを読んだことを覚えています。しかし、どこから探し始めるのかわかりません。

あるEXEから別のEXEに文字列を送信するにはどうすればよいですか?

4

1 に答える 1

2

正直なところ、これほどまでに驚いた。Casting "Hello" to longが何をしているのかわかりませんが、送信exe内でのみ実行され、4つのASCII文字のみを送信する場合を除きます。

WM_CopyDataを探してください。これは、このためだけに設計されたものです。

于 2013-02-25T19:38:52.980 に答える