Функция передачи строк (а заодно и числа) между программами через SendMessage:

Функция передачи строк (а заодно и числа) между программами через SendMessage:

Function SendString(TargetWnd, SourceWnd: THandle; N: Integer; Const S: String): Integer;
Var
 CD: TCopyDataStruct;
Begin
 CD.dwData := N;
 CD.cbData := Length(S);
 If CD.cbData = 0 Then
  CD.lpData := NIL
 Else CD.lpData := @S[1];
 Result := SendMessage(TargetWnd, WM_COPYDATA, SourceWnd, Integer(@CD));
End;
...
Procedure WMCopyData(Var Msg: TWMCopyData); Message WM_COPYDATA;
...
Procedure TForm1.WMCopyData(var Msg: TWMCopyData);
Var
 { Строка }
 S: String;
 { Число }
 N: Integer;
Begin
 If (Msg.CopyDataStruct^).lpData = NIL Then S := '';
 SetLength(S,Msg.CopyDataStruct^.cbData);
 S := String((Msg.CopyDataStruct^).lpData);
 N := (Msg.CopyDataStruct^).dwData;
End;
Автор: Rrader Взято с Vingrad.ru http://forum.vingrad.ru

Сперва необходимо присвоить строку, а затем выставить длину

S := String(Msg.CopyDataStruct^.lpData);
SetLength(S,Msg.CopyDataStruct^.cbData);

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...