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

IE öffnet unter Vista doppelt (win32com)

Beitragvon snakeseven » Samstag 13. September 2008, 17:54

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:

Beitragvon BlackVivi » Samstag 13. September 2008, 17:57

Code: Alles auswählen

In [1]: import webbrowser

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


Sogar Plattformunabhängig.
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Samstag 13. September 2008, 18:57

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

Beitragvon snakeseven » Sonntag 14. September 2008, 09:32

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

Beitragvon HWK » Sonntag 14. September 2008, 09:41

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

Beitragvon snakeseven » Sonntag 14. September 2008, 15:07

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 14. September 2008, 15:13

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

Beitragvon snakeseven » Sonntag 14. September 2008, 16:44

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 14. September 2008, 16:52

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 Modvoice

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]