Python: 是否可以在 Python 中执行 VBScript 脚本?

Python: Is it possible to execute a VBScript script in Python?

我正在尝试创建一个在启动时运行并使用特定键绑定自动填充密码的密码管理器。

目前,当 运行 启动时,应用程序会创建一个 window,我研究了使 window 隐藏的方法,并且我找到了一个允许这种情况发生的 VBScript 示例.

我找到的脚本如下:

Dim WShell
Set WShell = CreateObject("WScript.Shell")
WShell.Run "c:\x\myapp.exe", 0
Set WShell = Nothing

我添加了代码来检测我的程序是否 运行 离开启动目录。

我正在创建代码以在 Python 文件中执行 VBScript,但我无法理解我的函数 returns 相当无意义的异常。

我的 python 函数如下:

def run_vbscript(script:str):
    shell = win32com.client.Dispatch("WScript.Shell")
    shell.Run(script)

我目前收到的异常情况如下:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024894), None)

我的 Python 函数是否犯了任何明显的错误导致 VBScript 无法执行?

VBScript 运行 使用 wscript。所以只需调用它传递你的脚本作为参数。

所以你的函数看起来像:

import subprocess

def run_vbscript(script:str):
    subprocess.run(['wscript', script])

但是...

WShell.Run 只是 运行ning WinExec function from Windows API. You can pass to it the flag SW_HIDE 与您的 VBScript 所做的相同。

更好的是,您可以使用 CreateProcess,它也提供此功能,因为 WinExec 已被弃用。

勾选Python for Win32 Extensions for a way to call this function directly from Python code. You're after CreateProcess function,持有SW_HIDE标志的参数为startupinfo.wShowWindow.