Delphi

POSTMESSAGE로 STRING전송

Revers Tuna 2018. 8. 31. 11:27
*Use WM_COPYDATA when passing STRING via SENDMESSAGE.
[SENDER]
  
var
  vHwnd: HWND;
  sStr: PChar;
  vLParam: DWORD;
begin
    vHwnd := FindWindow('TfrmMain', nil);

    if vHwnd <> 0 then
    begin
        sStr := PChar('input send string');
        vLParam := GlobalAddAtom(sStr);
        PostMessage(vHwnd, WM_USER + 9791, LongInt(Handle), vLParam);
    end;
end;
[RECEIVER]
  
  procedure PostMessageFromString(var msg: TMessage); message WM_USER + 9791;
  
var
  pStr: PChar;
  sString: string;
begin
   GetMem(pStr, 1024);

    if GlobalGetAtomName(msg.LParam, pStr, 1024) > 0 then
      sString:= StrPas(pStr);

    GlobalDeleteAtom(msg.LParam);
    FreeMem(pStr);


    ShowMessage(sString);
end;