Delphi 10.1 Berlin
Вот так работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
str : String = 'test string';
var
hp : HWND;
he :HWND;
pstr : pchar;
begin
hp := FindWindow(nil,'TestMainForm');
If IsWindow(hp) Then
Begin
he := FindWindowEx(hp,0,'TEDIT',Nil);
if IsWindow(he)
Then
Begin
GetMem(pstr,SizeOf(Char)*(Length(str)+1));
Try
ZeroMemory(pstr,SizeOf(Char)*(Length(str)+1));
StrPCopy(pstr,str);
SendMessage(he,WM_SETTEXT,SizeOf(str),NativeInt(pstr))
Finally
freeMem(pstr,SizeOf(Char)*(Length(str)+1));
End;
End
Else ShowMessage('Edit not found');
End
Else ShowMessage('Main window not found.');
end;
Второе приложение - просто форма с одним TEdit'ом.
Что будет, если на форме несколько TEdit - не проверял. Может быть потребуется сделать EnumWindow/GetWindowInfo для определения какой именно нужен.