Итак, я имею этот следующий фрагмент кода, который пытается запустить Microsoft Powerpoint через WIN32API:Как запустить win32 приложений в отдельных потоках в Python
import threading
import win32com.client
import sys
class myDemo(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
try:
myObject = win32com.client.Dispatch("Powerpoint.Application")
print "OK"
except:
print "Failed to start Powerpoint!"
sys.exit(1)
print "Now attempting to shutdown..."
try:
myObject.quit()
except:
print "Error"
if __name__ == "__main__":
test = myDemo()
test.start()
Проблема в том, что он терпит неудачу, и я понятия не имею, почему , Однако, если я изменю последнюю строку на test.run()
, она запустится успешно. Так почему же это неудачно с test.start()
?
Почему это происходит и как его решить, учитывая, что мне нужна Powerpoint для асинхронного запуска отдельной ветви?
Заранее спасибо.
EDIT: Видимо, мой вопрос каким-то образом связана с этим: http://python.6.x6.nabble.com/Dispatch-error-CoInitialize-has-not-been-called-td1951088.html
Однако помимо предлагаемого надлежащего решения кажется, никто не ответить, почему именно COM ведет себя таким образом.
Что означало бы «начало»? Ваш объект имеет только один метод, «запустить» –
start() запускает метод запуска объекта асинхронно. – kstratis