我使用以下函数向应用程序发送消息。它似乎适用于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.
答案 0 :(得分:1)
您需要以64位模式编译应用程序,否则它将无法正常工作,并且64位句柄将被截断,从而使其无效。
为您提供的一些阅读材料: https://docs.microsoft.com/en-us/windows/desktop/winauto/32-bit-and-64-bit-interoperability