1

我有两个正在运行的 VC++ 应用程序,都是我编写的。它们不是同一个 EXE 的两个实例;它们是完全不同的项目。我想将一个字符串从一个发送到另一个。

第一个应用程序具有以下代码:

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

第二个具有以下代码来处理此消息:

// snippet of the WndProc function

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

// End snippet

当我运行它并传递消息时,我在接收应用程序中收到访问冲突错误。

在此处输入图像描述

尝试搜索与 LPCWSTR 和 LPARAM 之间的转换,但找不到任何有用的示例。与 Bad Ptr 错误更加混淆。我记得读过,发送的指针可能对第二个进程或类似的东西不可用。但我不知道从哪里开始寻找。

如何将字符串从一个 EXE 发送到另一个?

4

1 回答 1

2

老实说,很惊讶它走得这么远。不知道 Casting "Hello" to long 是做什么的,但它只会在发送的 exe 中,除非你只发送四个 ascii 字符,否则用处不大。

寻找 WM_CopyData,它就是为此而设计的。

于 2013-02-25T19:38:52.980 回答