>>>>Hi All,
>>>>
>>>>I have to use Sendmessage Winapi and receive message from opposite application. I found this code from internet:
>>>>
>>>>
>>>>
>>>>
>>>>Declare Long FindWindowA In Win32API String cNULL, String cWinName
>>>>DECLARE LONG SendMessage IN user32 AS WinAPI_SendMessage ;
>>>> LONG,;
>>>> LONG,;
>>>> LONG,;
>>>> STRING @
>>>>sTitle = "kl_ecrsunucu"
>>>>iHwnd = FindWindowA(0, sTitle)
>>>>#DEFINE WM_COPYDATA 0x004A
>>>>* _vfp.hWnd
>>>>xstr="qqq"
>>>>lnRetVal = WinAPI_SendMessage(ihWnd, WM_COPYDATA, this.HWnd , @xstr)
>>>>WAIT WINDOW lnretval
>>>>
>>>>
>>>>opposite application look for kl_ecrclient caption at my form. What I should do for receive message after change my forms caption? How can I read message from opposite?
>>>
>>>Metin,
>>>
>>>If you use COPYDATA, then
>>>the string ( xstr ) must respect the format - length is 12 bytes
>>>
>>>
>>>
>>>typedef struct tagCOPYDATASTRUCT {
>>> ULONG_PTR dwData;
>>> DWORD cbData;
>>> PVOID lpData;
>>>} COPYDATASTRUCT, *PCOPYDATASTRUCT;
>>>
>>>
>>>dwData : see above
>>>cbData: see above
>>>lpData: since this is a pointer to the data (ie the address, you have to allocate this space with an api - eg HeapAlloc(). Do not forget to free the buffer on exit : HeapFree)
>>>
>>>Sending:
>>>
>>>You can copy data to the allocated lpdata buffer with sys(2600)
>>>
>>>Receive:
>>>
>>>function ReceiveDetailMessage(hwnd, msg, wparam, lparam)
>>>
>>> local dwdata, cbdata , lpData, s
>>>
>>> dwdata = ctobin(Sys(2600, m.lparam+0, 4), '4rs')
>>> cbdata = ctobin(Sys(2600, m.lparam+4, 4), '4rs')
>>> lpData = ctobin(Sys(2600, m.lparam+8, 4), '4rs')
>>> s= sys(2600, m.lpData, m.cbdata )
>>>
>>>
>>
>>When you saying "length is 12 bytes", what you mean?
>>
>>Thank you,
>
>I'm pretty sure that he means that the string must be prepared to be exactly 12 bytes long, so you must add the line "xstr = padr(xstr,12)".
Actually it's structure's lenght, not message.