Hallo,
ich habe folgendes Beispiel gefunden.
Das klappt zum Beispiel ganz gut mit Notepad, aber nicht mit meinem Programm.
Das Memo was ich auslesen will liegt in dem Programm auf einer zweiten Form.
Kann es sein das es deswegen nicht funktioniert?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
function EnumWindowsProc(Wnd: HWND; lParam: LPARAM): BOOL; stdcall;
var
ClassName: string;
EditHWnd: HWND;
begin
SetLength(ClassName, 512);
SetLength(ClassName, GetClassName(Wnd, PChar(ClassName), Length(ClassName)));
if ClassName = 'Notepad' then
begin
EditHWnd := FindWindowEx(Wnd, 0, 'Edit', nil);
if IsWindow(EditHWnd) then
TList(lParam).Add(Pointer(EditHWnd));
end;
end;
var
List: TList;
I: Integer;
S: string;
begin
List := TList.Create;
try
EnumWindows(@EnumWindowsProc, LPARAM(List));
for I := 0 to List.Count - 1 do
begin
SetLength(S, SendMessage(HWND(List.Items[I]), WM_GETTEXTLENGTH, 0, 0) + 1);
if Length(S) > 1 then
begin
SetLength(S, SendMessage(HWND(List.Items[I]), WM_GETTEXT, Length(S), LPARAM(PChar(S))));
Showmessage(S);
// S := StringReplace(S, '111', 'Neuer Text', [rfReplaceAll]);
// SendMessage(HWND(List.Items[I]), WM_SETTEXT, Length(S), LPARAM(PChar(S)));
end;
end;
finally
List.Free;
end;
end;
Kann mir das bitte mal jemand erklären?
Viele Grüsse
Mirco