Hallö'chen
,
ich habe ein Programm geschrieben, mit dem ich über
OLE auf
den Internetexplorer zugreife und z.B. das BrowserFenster
zoomen kann. Funktioniert soweit auch ziehmlich klasse, ich
überprüfe erst, ob schon ein IE Fenster da ist:
Code:
WinHanlde := FindWIndow( 'IEFrame', nil );
if( 0 <> WinHanlde )then
BEGIN
//benutze das exestierende Fenster
END ELSE
BEGIN
//mach einen eigenes IE - Fenster auf
END;
wenn nun schon ein IE fenster da ist, dann muss ich einer
OLEvariant - Variablen, nur noch die ID des Fensters zuweisen
und kann dann z.B. mit ihm zu einer gewünschten
URL browsen:
Code:
IEApp := GetActiveOleObject('InternetExplorer.Application');
IEApp.Navigate(
URL);
wenn kein Fenster da ist, muss ich einfach ein neues erstellen
und kann dann damit Browsen, alles kein Problem:
Code:
IEApp := CreateOLEObject('InternetExplorer.Application');
IEApp.Visible := True;
IEApp.Navigate(
URL);
Mein Problem ist jetzt nur, dass wenn schon mehrere IE Fenster
offen sind, immer das Fenster genommen wird, was ich erstellt
habe oder wenn ich keins erstellt habe, das was generell als
erstes geöffnet wurde. Und wenn das geschlossen wurde ... dann
das welches als 2tes geöffnet wurde und so weiter.
Es ist mir klar, dass das Problem an der Zuweisung
IEApp := GetActiveOleObject('InternetExplorer.Application') ;
liegt, da die Funktion GetActiveOleObject mit sicherheit einfach
die ID des als erstes im Speicher gefundenen IE - Fensters ausgibt.
Das ist aber blöd, da mein Programm dann immer nur bei diesem
Fenster funktioniert, ich hätte es viel lieber, wenn das Fenster
genommen werden würde, was als letztes den Fokus hatte.
Hat da vielleicht jemand eine Idee? Wie bekomme ich herraus, welches
fenster als letztes den Fokus hatte?
Falls jemand eine Idee hätte, würde ich mich wie immer sehr freuen.
MFG
Evian