Hallo,
ich weis, es gibt genügend Threads über das Finden von Handles, dennoch habe ich ein Problem, bei dem mir die anderen Beiträge nicht ganz so helfen konnten. Folgendes:
Ich verwende IE7 mit Registern. Auf einer Website gibt es sehr viele Editfelder, die ich suchen und deren Text ich ermitteln möchte. Nun komm ich aber einfach nicht an die Editfelder heran, das Problem wird wohl bei mir sein, in das Registerfenster hineinzukommen, doch wie stell ich es an?
Momentaner Code:
Delphi-Quellcode:
function EnumChildWindowsProc(hWnd: HWND; lParam: LPARAM): Boolean; stdcall;
var
ClassName : array[0..255] of Char;
Buffer : array[0..255] of Char;
begin
GetClassName(hWnd, ClassName, SizeOf(ClassName)); // Klassenname ermitteln
SendMessage(hWnd, WM_GETTEXT, SizeOf(Buffer), Integer(@Buffer)); // Text des Objektes ermitteln
Form1.Memo1.Lines.Add(IntToStr(hWnd) + ' ' + ClassName + ' ' + Buffer);
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Wnd: HWND;
const
CAPTION = ' TEXT... - Windows Internet Explorer';
begin
Wnd := FindWindow(nil, CAPTION);
Label1.Caption := IntToStr(Wnd);
if Wnd <> 0 then EnumChildWindows(Wnd, @EnumChildWindowsProc, 0);
end;
Wnd gibt mir das
Handle des Internet Explorers zurück, ist ok. Nun habe ich bei der Ausgabe geschaut, welcher Klassenname für Register passt und das ist TabWindowClass. Doch in der Klasse werder mir wenige unpassende Klassen ausgegeben. Auch mit dem
Handle des Registers kommen die vielen Editfelder nicht zum vorscheinen.
Wie muss ich heran gehen, um wirklich den Inhalt der aktuellen Website mit FindWindow, EnumChildWindows bearbeiten zu können?
Gruß
Mazel