Seite 1 von 1

Problem mit win32com und Win Scripting Host

Verfasst: Mittwoch 14. September 2005, 18:16
von NaNO3
Hallo zusammen

Ich habe ein problem ich möchte über die com schnittstelle auf den WSH zugreifen das mache ich so:

Code: Alles auswählen

import sys
import win32api
import win32com.client

shell = win32com.client.Dispatch("WScript.Shell")

oExec = shell.Exec("C:\Documents and Settings\Pletscher\Desktop\compile.bat")

while oExec.Status == 0:
    WScript.Sleep(500) 
das problem ist aber das immer der fehler auftauch : NameError : name 'WScript' is not defined.

Aber ich habe bei M$ in der M$DN gelesen das man das genau so schreiben muss hier der link dazu

http://msdn.microsoft.com/library/defau ... method.asp

ich komm einfach nicht weiter mit diesem problem.

wen es natürlich eine andere möglich keit geben würde ein programm oder einen batch zu starten und ihm auch noch argumente zu übergeben dan währe ich natürlich auch über infos froh.

mfg NaNO3

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Mittwoch 14. September 2005, 18:27
von Leonidas
Klar, WScript ist ein Engebautes Objekt des WSH. WScript.Sleep ist das gleiche wie

Code: Alles auswählen

import time
time.sleep(0.5)
also kannst du es ruhig ersetzen.

Aber du kannst auch ganz einfach os.system() oder etwas aus dem Modul subprocess nutzen, das ist viel einfacher als COM-Aufrufe.

Verfasst: Mittwoch 14. September 2005, 21:26
von NaNO3
Danke dir für den Tip

Ich habe das Jetzt so gelöst:

Code: Alles auswählen

import sys
import os

os.execl("C:\Documents and Settings\Pletscher\Desktop\compile.bat")
funktioniert eigentlich ganz gut

ein einziges kleines Problem PythonWin stürzt beim ausführen immer ab wen ich das script aber direkt ausführe, gibt es keine probleme.

Verfasst: Donnerstag 15. September 2005, 13:04
von gerold
NaNO3 hat geschrieben:[...]

Code: Alles auswählen

os.execl("C:\Documents and Settings\Pletscher\Desktop\compile.bat")
[...]
ein einziges kleines Problem PythonWin stürzt beim ausführen immer ab wen ich das script aber direkt ausführe, gibt es keine probleme.
Hi!

PythonWin stürzt wahrscheinlich ab, weil execl das Kommando nicht wieder zurück gibt. Versuche es mal mit os.system oder einer der os.spawn-Varianten. Bei os.spawn kannst du auch angeben, ob das Python-Programm warten soll, bis das aufgerufene Programm fertig ist.

mfg
Gerold
:-)