Einzelnen Beitrag anzeigen

Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

Editfelder im Internet Explorer finden

  Alt 4. Jan 2008, 13:39
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
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat