从具有最小化 window 的 python 代码启动 VBS 脚本?
Starting VBS script from python code with minimized window?
我有 vbs 脚本,我想从 python 代码 运行 Windows 10,但最小化 window,以便 window 不会以展开形式出现在屏幕上。 我尝试将 subprocesses.Popen 与启动信息参数一起使用,例如:
SW_MINIMIZE = 6
# I also tried SW_HIDE = 0
info = subprocess.STARTUPINFO()
info.dwFlags = subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = SW_MINIMIZE
subprocess.Popen(["C:/Windows/SysWOW64/cscript.exe", "script.vbs"], startupinfo=info)
但我没有得到预期的结果 - 当我 运行 python 脚本时,脚本 window 仍然弹出。
我也试过用cmd命令调用它"start /min script.vbs"
- 也不成功。
是否可以启动初始最小化的window?或者至少在开始后立即最小化 window 而无需等待
尝试使用 wscript.exe 而不是 cscript。根据您的 vbs 脚本,这根本不应该显示任何脚本 window。
如果您需要最小化 window,您可以修改 this solution 中的代码并像这样启动您的脚本:
Const MIN_WINDOW = 2
strComputer = “.”
Set objWMIService = GetObject(“winmgmts:\” & strComputer & “\root\cimv2”)
Set objStartup = objWMIService.Get(“Win32_ProcessStartup”)
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = MIN_WINDOW
Set objProcess = GetObject(“winmgmts:\” & strComputer & “\root\cimv2:Win32_Process”)
objProcess.Create “Cscript.exe C:\Scripts\Test.vbs”, null, objConfig, intProcessID
我已经使用 PyQt5 解决了这个问题,这不是我想要的,但它有效
class MainForm(QWidget):
def __init__(self):
super().__init__()
def init_ui(self):
proc = QProcess()
command = "C:/Windows/SysWOW64/wscript.exe"
proc.setProgram(command)
args = ['C:/work/script.vbs',]
proc.setArguments(args)
proc.start()
window_title = 'title'
# you need to know title of your external app window
hwnd = win32gui.FindWindowEx(
0, 0, None, windows_title)
container = self.createWindowContainer(window, self)
layout.addWidget(container)
self.setLayout(layout)
self.setGeometry(500, 500, 450, 400)
self.setWindowTitle(window_title)
self.showMinimized()
# or self.show() if you need pop up window
if __name__ == '__main__':
app = QApplication(sys.argv)
mf = MainForm()
sys.exit(app.exec_())