Как открыть файл EXE с Python, который зависит от файлов AVI? - PullRequest
3 голосов
/ 01 октября 2019

Я пытаюсь открыть Adv5KTCP.exe (путь показан в коде), но этот exe-файл на самом деле открывает еще три файла avi.files, как показано на рисунке ниже. Это вызывает ошибку. Я пытался вызвать os, subprocess & pywinauto, но безрезультатно. Я также попытался добавить путь к файлам переменной среды, но я думаю, что это не имеет смысла. Открытие exe из командной строки тоже не работает. Тем не менее, exe-файл можно открыть вручную, дважды щелкнув exe-файл (как обычно). Мне просто нужно, чтобы это было автоматизировано.

AVI файлы: avi files

Ошибка:

enter image description here

Двойной щелчок по exe откроет это окно:

enter image description here

Вот мой код:

import os
import sys, logging
import subprocess
import ctypes
from pywinauto import Application

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if is_admin():
    exe  = "Adv5KTCP.exe"  #path set in environment variable: "C:\Program Files (x86)\Advantech\ADAM-5000TCP-6000 Utility\Program"
    os.startfile(exe)
    # subprocess.Popen([exe])
    # application = Application(backend="uia").start(exe)
else:
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

У кого-нибудь есть идеи о том, как я могу это сделать? Заранее благодарю за ответ.

Новые результаты:

Я попытался вырезать три AVI-файла на рабочий стол и установить путь к системной переменной на рабочем столе, а exe даетта же ошибка. Однако, когда я вырезал exe-файл на рабочий стол с avi-файлами, как показано ниже, это работает! Даже когда другие необходимые файлы не находятся на рабочем столе, но путь к ним установлен в системную переменную. Это означает, что exe каким-то образом регистрирует пути avi при щелчке, расположении / позиции или какой-то другой, в которой я не уверен.

enter image description here

...