将消息从C 发送到DelphiX

Sending message from C++ to Delphi X

本文关键字:DelphiX 消息      更新时间:2023-10-16

我正在尝试将我的C 控制台应用程序发送到Windows 10上的Delphi X应用程序,但由于某种原因,它不起作用。以下是我的C 代码:

int _tmain(int argc, _TCHAR* argv[])
{
    CString dataToSend = _T("MY DATA");
    COPYDATASTRUCT cds;
    cds.dwData = 1; // can be anything
    cds.cbData = sizeof(TCHAR) * (_tcslen(dataToSend) + 1);
    cds.lpData = (void*)dataToSend.GetBuffer(cds.cbData);
    HWND hwndFound;         // This is what is returned to the caller.
    hwndFound = FindWindow(_T("TMyForm"), 0);

    if (hwndFound)
    {
        printf("WINDOW IS FOUND %i... Sending a message...n", hwndFound);
        SendMessage(hwndFound, WM_COPYDATA, (WPARAM)hwndFound, (LPARAM)(LPVOID)&cds);
    }
    else 
    {
        printf("WINDOW IS NOT FOUND!n");
    }

    char* end = "";
    printf("Press enter to continue...");
    scanf(end);
    return 0;
}

这是我的delphi代码:

private
    procedure WMCopyData(var Msg : TWMCopyData); message WM_COPYDATA;
....

procedure TMyForm.WMCopyData(var Msg: TWMCopyData);
var
   s : AnsiString;
begin
   s := PAnsiChar(Msg.CopyDataStruct.lpData) ;
   ShowMessage(s);
end;
....
procedure TMyForm.MyButtonClick(Sender: TObject);
begin
   // Checking my handle
   ShowMessage(IntToStr(Handle));
end

C 应用程序说它找到了一个句柄:

窗口找到3609366 ...发送消息...按Enter继续...

当我按Mybutton(3609366)时显示相同的句柄,但不会出现消息框。由于某种原因,Delphi应用程序未收到该消息。

你知道为什么吗?

P.S。:他们在同一用户帐户下运行。

您正在向Delphi发送WM_USER 1消息,但在Delphi中没有听取该消息。