SendMessage到64位应用程序无法正常工作

时间:2017-05-06 05:44:45

标签: c++ sendmessage

我使用以下函数向应用程序发送消息。它似乎适用于32位应用程序,但不适用于64位应用程序(64位应用程序似乎没有得到任何消息)。有什么问题,我该如何解决?谢谢。

void MyTest::SendCmd(HWND hwnd, QString cmd)
{
COPYDATASTRUCT data;
data.dwData = FIXHEADER;
data.cbData = cmd.size()+1;
data.lpData = cmd.toLocal8Bit().data();

LPARAM lpdwResult;
LRESULT err = SendMessageTimeout(hwnd, WM_COPYDATA, 0, (LPARAM)&data, SMTO_ABORTIFHUNG, 2000, &lpdwResult); 
}
//FIXHEADER is a fixed hex value that the application checks against to make sure the message is sent intentional for it.

1 个答案:

答案 0 :(得分:1)

您需要以64位模式编译应用程序,否则它将无法正常工作,并且64位句柄将被截断,从而使其无效。

为您提供的一些阅读材料: https://docs.microsoft.com/en-us/windows/desktop/winauto/32-bit-and-64-bit-interoperability