Autor Beitrag
Evian
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 15.10.03 11:08 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
WinHanlde := FindWIndow( 'IEFrame'nil ); 
      if0 <> 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:
ausblenden Delphi-Quelltext
1:
2:
3:
 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
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
ausblenden Delphi-Quelltext
1:
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

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt; Überflüssige Absätze entfernt; Topic verschoben.
Tana´Ri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 230



BeitragVerfasst: Fr 17.10.03 10:26 
ich hab da nen kleinen test durchgeführt, in dem ich einfach das fenster minimiert habe welches handle ich per findwindow (IEFrame) bekam, dies war bei mir immer jenes gewesen das zuletzt den EingabeFokus hatte.

wird wohl immer das erste bzw. das höchste (entsprechende window) in der Z-Order zurückliefern (toplevelwindows) siehe z.b. setforegroundwindow

_________________
mfg
Tana´Ri