Как вы отлаживаете интеграцию win32 com с Python?

Я пытаюсь вызвать API преобразования текста в речь из Python, используя win32com.client. Интерпретатор Python связан с Splunk, и я могу вызвать его вручную, используя "splunk cmd python".

Вот образец

from win32com.client import constants
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak('this is a test')

Мой код вызывается через процесс splunkd (работает как обычный пользователь Windows), и я получаю следующее сообщение об ошибке.

(-2147352567, 'Исключение произошло.', (0, Нет, Нет, Нет, 0, -2147200925), Нет)

Я изо всех сил пытаюсь решить проблему, какие-либо предложения?

Входящая в комплект версия Python — Python 2.6.4 (r264:75706, 7 февраля 2011 г., 14:20:39) [MSC v.1400, 64 бит (AMD64)]

Кросс-пост из Splunk Answers http://splunk-base.splunk.com/answers/31181/debugging-custom-search-commands

== update == Я отследил проблему до процесса запуска интерпретатора Python. По какой-то причине процессы взаимодействуют со средой таким образом, что интерпретатор python ведет себя по-другому. Я подозреваю, что ошибка win32 на самом деле является нарушением прав доступа.


person Marinus    schedule 27.09.2011    source источник
comment
вы пробовали 32-битный питон? такие же результаты? вы можете использовать ollydbg для запуска процесса python и посмотреть, что на самом деле является исключением (ollydbg работает только с 32-битными исполняемыми файлами), для 64-битных вы можете использовать windbg (инструменты отладки MS), но менее дружелюбны   -  person sherpya    schedule 09.11.2011


Ответы (1)


Приложение работает, как и ожидалось, при запуске от имени обычного пользователя. Родительский процесс работает как система, которая не может вызвать TTS.

person Marinus    schedule 15.11.2011