IE öffnet unter Vista doppelt (win32com)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Code: Alles auswählen

In [1]: import webbrowser

In [2]: webbrowser.open("http://google.de")
Out[2]: True
Sogar Plattformunabhängig.
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Besser dann subprocess.
MfG
HWK
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Lieber stattdessen eine Liste als ersten Parameter nutzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

snakeseven hat geschrieben:
Leonidas hat geschrieben:Lieber stattdessen eine Liste als ersten Parameter nutzen.
Ist das sicherer?
Ja.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten