如何在Windows上创建文件夹的快捷方式?

时间:2017-04-22 00:29:13

标签: python python-3.x python-winshell

我已经为可执行文件创建了快捷方式,但是当我尝试为文件夹创建一个时,它不起作用。 它确实创建了一个快捷方式,它不是正确的“目标类型”。请看下面的图片。 而不是'文件',目标类型应该是'文件夹'。问题是,当我打开快捷方式时,它会询问我要打开文件的程序,并且它不会打开文件夹。

screenshot showing incorrect Target property of a shortcut created to a folder with my code

我用来创建快捷方式的功能如下

from win32com.client import Dispatch
import winshell
import os

def create_shortcuts(self, tool_name, exe_path, startin, icon_path):

    shell = Dispatch('WScript.Shell')
    shortcut_file = os.path.join(winshell.desktop(), tool_name + '.lnk')
    shortcut = shell.CreateShortCut(shortcut_file)
    shortcut.Targetpath = exe_path
    shortcut.WorkingDirectory = startin
    shortcut.IconLocation = icon_path
    shortcut.save()

我不知道是否可以设置'目标类型'。我找不到办法,但我知道必须有办法。

1 个答案:

答案 0 :(得分:1)

如果您想使用.Net“ clr”(尤其是如果您已经需要它):

首先运行此命令...您将必须将此命令的输出与您的应用程序一起发送

"c:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\TlbImp.exe" %SystemRoot%\system32\wshom.ocx /out:Interop.IWshRuntimeLibrary.dll
如果以相当标准的方式安装Windows SDK,则甚至可能在

tlbimp.exe路径中。但是,如果没有,就可以了,您只需将“程序集”(.Net领域中提供接口的dll的花哨词)随应用程序一起寄出。

然后此代码将在python中工作:

import clr
sys.path.append(DIRECTORY_WHERE_YOU_PUT_THE_DLL)
clr.AddReference('Interop.IWshRuntimeLibrary')
import Interop.IWshRuntimeLibrary
sc = Interop.IWshRuntimeLibrary.WshShell().CreateShortcut("c:\\test\\sc.lnk")
isc = Interop.IWshRuntimeLibrary.IWshShortcut(sc)
isc.set_TargetPath("C:\\")
isc.Save()

....上面的代码经过太多修改和修改,甚至可能与Mono一起使用。