Задать вопрос
@kiosok

Как запустить .bat файл через pywinauto?

При попытки запустить программу с расширение .bat происходит ошибка:

Traceback (most recent call last):
  File "G:\Documents\Python\auto_old_dump\auto_old_dump_2.py", line 9, in <module>
    app = Application(backend="uia").start(r'G:\Documents\Python\auto_old_dump\dump\start.bat')
  File "C:\Users\barsi\AppData\Local\Programs\Python\Python310\lib\site-packages\pywinauto\application.py", line 1075, in start
    if wait_for_idle and not app_idle():
  File "C:\Users\barsi\AppData\Local\Programs\Python\Python310\lib\site-packages\pywinauto\application.py", line 1061, in app_idle
    result = win32event.WaitForInputIdle(
pywintypes.error: (1471, 'WaitForInputIdle', 'Не удалось завершить запрошенную операцию, так как указанный процесс не является процессом графического интерфейса пользователя.')

G:\Documents\Python\auto_old_dump>dotnet Dumper.dll


Код скрипта:
from pywinauto.application import Application

app = Application(backend="uia").start(r'G:\Documents\Python\auto_old_dump\dump\start.bat')

(Использую библиотеку pywinauto т.к. в последствии надо будет взаимодействовать с этой программой)
скриншот той программы что он должен запустить:
6331aa1926a71654357692.png
  • Вопрос задан
  • 205 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
Vindicar
@Vindicar
RTFM!
С командной строкой взаимодействуй через стандартный модуль subprocess. pywinauto ТОЛЬКО для графических приложений.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Скорее всего напрямую батник вы запустить не сможете - это не исполняемый файл. Винда не умеет так как никсы.
Вам нужно запускать батник как параметр cmd.exe.
Например:
cmd.exe /c G:\Documents\Python\auto_old_dump\dump\start.bat
Ответ написан
Комментировать
vasily-v-ryabov
@vasily-v-ryabov
Python, UI Automation, pywinauto
Скорее всего это типичная проблема launcher -> spawned child process. Нужно просто покурить параметры метода .start(...), чтобы он не ждал GUI в launcher процессе (кажется, wait_for_idle=False), а потом использовать метод .connect(...) уже по тайтлу окна, например, с таймаутом (оно же не мгновенно появится). Ну, или да, стартовать лончер модулем subprocess, чтоб ничего не курить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽