Seite 1 von 1

IE öffnet unter Vista doppelt (win32com)

Verfasst: Samstag 13. September 2008, 17:54
von snakeseven
Hallo,
ich habe leider (oder zum Glück?) kein Vista und kann es deshalb auch nicht ausprobieren, aber eine meiner Anwendungen macht unter Vista nicht das, was es soll.
Wenn ich über win32com den IE starte, öffnet er sich unter Vista zweimal. Einmal mit einer blanken Seite und einmal mit der richtigen. Das Problem scheint bekannt, aber nicht gelöst:

http://www.gossamer-threads.com/lists/p ... hon/661251

Der betroffene Code:

Code: Alles auswählen

try:
                self.iexplor =   win32com.client.Dispatch("InternetExplorer.Application")
                while self.iexplor.Busy: time.sleep(0.1)
                self.iexplor.Visible = 1 
                self.iexplor.Navigate(visiturl)
            except:
                self.alert_ienotfound()
Hat jemand von euch Vista und kann mir da helfen?

Grüße,
Seven

Verfasst: Samstag 13. September 2008, 17:57
von BlackVivi

Code: Alles auswählen

In [1]: import webbrowser

In [2]: webbrowser.open("http://google.de")
Out[2]: True
Sogar Plattformunabhängig.

Verfasst: Samstag 13. September 2008, 18:57
von snakeseven
Hi BlackVivi,

danke für die schnelle Antwort.
Aber ich muss das über win32com machen, da die Applikation zeitgesteuert Flashmovies abspielt und diese schließen, bzw. nicht starten sollen, wenn eine andere Anwendung das Movie-Fenster überlagert.

Der Browser, den die Funktion webbrowser() öffnet, teilt seiner Umgebung offenbar nicht mit, ob und an welcher Position der Browser geöffnet wird. Folglich bleibt das Flashmovie aktiv und legt sich über das Browserfenster. Sieht unschön aus. Der IE gibt seiner Umgebung bekannt, dss er jetzt öffnet und das Flashfenster wird geschlossen.

Ich hätte nämlich sehr gerne weiter mit webbrowser() gearbeitet.

Grüße,
Seven

Verfasst: Sonntag 14. September 2008, 09:32
von snakeseven
Werds mal so probieren:

Code: Alles auswählen

pid = os.spawnl(os.P_NOWAIT, "C:/Programme/MozillaFirefox/firefox.exe",visiturl)
Hat den Vorteil, dass ich so auch den Firefox starten kann, der ja über win32com nicht ansprechbar zu sein scheint.

Werde dann berichten.

Grüße,
Seven

Verfasst: Sonntag 14. September 2008, 09:41
von HWK
Besser dann subprocess.
MfG
HWK

Verfasst: Sonntag 14. September 2008, 15:07
von snakeseven
HWK hat geschrieben:Besser dann subprocess.
MfG
HWK
Ja genau, denn dann kann ich die URL gleich als Arguemnt mit übergeben:

Code: Alles auswählen

import popen2,subprocess

subprocess.Popen('C:/Programme/MozillaFirefox/firefox.exe www.python-forum.de')
Grüße, Seven

Verfasst: Sonntag 14. September 2008, 15:13
von Leonidas
Lieber stattdessen eine Liste als ersten Parameter nutzen.

Verfasst: Sonntag 14. September 2008, 16:44
von snakeseven
Leonidas hat geschrieben:Lieber stattdessen eine Liste als ersten Parameter nutzen.
Ist das sicherer?

Ansonsten kann ich kein Update der URL per stdin.write(url) erreichen.
Muss also den alten Prozess erst killen und dann einen neuen mit neuer url starten. Über win32com ging das mit ie.Navigate(url) so schön einfach.

Gruß, Seven

Verfasst: Sonntag 14. September 2008, 16:52
von Leonidas
snakeseven hat geschrieben:
Leonidas hat geschrieben:Lieber stattdessen eine Liste als ersten Parameter nutzen.
Ist das sicherer?
Ja.