python - 无法启动 Windows 快捷方式

标签 python windows

我正在尝试使用 python 启动一个窗口。我已经尝试过许多使用 os.system、subprocess.call、os.startfile 等的方法,但我总是收到一条错误消息,指出该路径不存在。

我知道路径是正确的,因为我已经尝试在 CMD.EXE 中运行以下命令:

start D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk

以下是我尝试过但没有成功的一些方法:

os.startfile(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
os.startfile("D:\\johan\\programmering\\Scripts\\shortcuts\\HWMonitor.lnk")
subprocess.call("D:\\johan\\programmering\\Scripts\\shortcuts\\HWMonitor.lnk")
subprocess.call(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
subprocess.Popen(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
subprocess.Popen(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk", shell=True)
os.system(r"start D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")

p= subprocess.Popen(r"start D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk", shell=True)
p.wait()

import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shortcut = shell.CreateShortCut(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
subprocess.call(shortcut.Targetpath)

免责声明 我知道在 SO 上也有类似的问题,但没有一个对我有帮助。所以在你开始喊“重复!”之前请知道我已经尝试了这些解决方案但没有成功。

最佳答案

根据这个answer ,你可以解析你的链接路径,然后调用解析的路径

import sys
import win32com.client,win32api

shell = win32com.client.Dispatch("WScript.Shell")
shortcut = shell.CreateShortCut(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
long_path = shortcut.Targetpath

但是 long_path 可能是一个奇怪的 Windows 路径,里面有很多垃圾,所以如果

subprocess.call([long_path])

不起作用,您可以将长路径解析为短路径(8.3 名称):

short_path=win32api.GetShortPathName(long_path)

现在做:

subprocess.call([short_path])

关于python - 无法启动 Windows 快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953772/

相关文章:

python - Matplotlib 3D 散点图中的颜色丢失

python - 在 python 中实现 HMAC-SHA1

python - 在特定条件下对嵌套字典列表中的值求和

python - 需要 pexpect 模块的帮助 - 脚本找不到匹配项

python - 检查 PyQt4 中 QPushButton 的状态?

c - SetWindowsHookEx - 取消Winkey + L(电脑锁定)

c# - 如何访问 Windows 中的特殊目录?

windows - CreatePatternBrush 和屏幕颜色深度

windows - 在DllMain中,是否可以在没有DLL_THREAD_ATTACH的情况下发生DLL_THREAD_DETACH?

c++ - WPD API - 无法从设备传输内容(包括 SSCCE)