我们从Python开源项目中,提取了以下16个代码示例,用于说明如何使用win32com.shell.shell.IID_IShellLink()。
def resolve_shortcut(filename): """resolve_shortcut("Notepad.lnk") => "C:\WINDOWS\system32\notepad.exe" Returns the path refered to by a windows shortcut (.lnk) file. """ shell_link = pythoncom.CoCreateInstance( shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) persistant_file = shell_link.QueryInterface(pythoncom.IID_IPersistFile) persistant_file.Load(filename) shell_link.Resolve(0, 0) linked_to_file = shell_link.GetPath(shell.SLGP_UNCPRIORITY)[0] return linked_to_file
def __init__(self, path=None, arguments=None, description=None, workingdir=None, iconpath=None, iconidx=0): self._base = pythoncom.CoCreateInstance( shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink ) data = map(None, ['"%s"' % os.path.abspath(path), arguments, description, os.path.abspath(workingdir), os.path.abspath(iconpath)], ("SetPath", "SetArguments", "SetDescription", "SetWorkingDirectory") ) for value, function in data: if value and function: # call function on each non-null value getattr(self, function)(value) if iconpath: self.SetIconLocation(iconpath, iconidx)
def testShellLink(self): desktop = str(shell.SHGetSpecialFolderPath(0, CSIDL_DESKTOP)) num = 0 shellLink = pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) persistFile = shellLink.QueryInterface(pythoncom.IID_IPersistFile) names = [os.path.join(desktop, n) for n in os.listdir(desktop)] programs = str(shell.SHGetSpecialFolderPath(0, CSIDL_PROGRAMS)) names.extend([os.path.join(programs, n) for n in os.listdir(programs)]) for name in names: try: persistFile.Load(name,STGM_READ) except pythoncom.com_error: continue # Resolve is slow - avoid it for our tests. #shellLink.Resolve(0, shell.SLR_ANY_MATCH | shell.SLR_NO_UI) fname, findData = shellLink.GetPath(0) unc = shellLink.GetPath(shell.SLGP_UNCPRIORITY)[0] num += 1 if num == 0: # This isn't a fatal error, but is unlikely. print "Could not find any links on your desktop or programs dir, which is unusual"
def create_shortcut(path, description, filename, arguments="", workdir="", iconpath="", iconindex=0): import pythoncom from win32com.shell import shell, shellcon ilink = pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) ilink.SetPath(path) ilink.SetDescription(description) if arguments: ilink.SetArguments(arguments) if workdir: ilink.SetWorkingDirectory(workdir) if iconpath or iconindex: ilink.SetIconLocation(iconpath, iconindex) # now save it. ipf = ilink.QueryInterface(pythoncom.IID_IPersistFile) ipf.Save(filename, 0) # Support the same list of "path names" as bdist_wininst.
def testShellLink(self): desktop = str(shell.SHGetSpecialFolderPath(0, CSIDL_DESKTOP)) num = 0 shellLink = pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) persistFile = shellLink.QueryInterface(pythoncom.IID_IPersistFile) names = [os.path.join(desktop, n) for n in os.listdir(desktop)] programs = str(shell.SHGetSpecialFolderPath(0, CSIDL_PROGRAMS)) names.extend([os.path.join(programs, n) for n in os.listdir(programs)]) for name in names: try: persistFile.Load(name,STGM_READ) except pythoncom.com_error: continue # Resolve is slow - avoid it for our tests. #shellLink.Resolve(0, shell.SLR_ANY_MATCH | shell.SLR_NO_UI) fname, findData = shellLink.GetPath(0) unc = shellLink.GetPath(shell.SLGP_UNCPRIORITY)[0] num += 1 if num == 0: # This isn't a fatal error, but is unlikely. print("Could not find any links on your desktop or programs dir, which is unusual")
def read_scexec(scfile): """ read shortcut and return executable path """ if sys.platform != 'win32': return "Only available for windows platforms! returning" try: import pythoncom from win32com.shell import shell, shellcon except: return "pythoncom module not found! \n download from http://sourceforge.net/projects/pywin32/files/pywin32/" shortcut = pythoncom.CoCreateInstance ( shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink ) shortcut.QueryInterface (pythoncom.IID_IPersistFile).Load (scfile, 0) cmd, _ = shortcut.GetPath (shell.SLGP_UNCPRIORITY) args = shortcut.GetArguments () work_dir = shortcut.GetWorkingDirectory() return "Executing " + cmd, cmd, args, work_dir, False, False
def __init__( self ): self._base = pythoncom.CoCreateInstance( shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink )
def DumpLink(fname): shellLink = pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) persistFile = shellLink.QueryInterface(pythoncom.IID_IPersistFile) persistFile.Load(fname,STGM_READ) shellLink.Resolve(0, shell.SLR_ANY_MATCH | shell.SLR_NO_UI) fname, findData = shellLink.GetPath(0) print "Filename:", fname, ", UNC=", shellLink.GetPath(shell.SLGP_UNCPRIORITY)[0] print "Description:", shellLink.GetDescription() print "Working Directory:", shellLink.GetWorkingDirectory() print "Icon:", shellLink.GetIconLocation()
def DumpLink(fname): shellLink = pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) persistFile = shellLink.QueryInterface(pythoncom.IID_IPersistFile) persistFile.Load(fname,STGM_READ) shellLink.Resolve(0, shell.SLR_ANY_MATCH | shell.SLR_NO_UI) fname, findData = shellLink.GetPath(0) print("Filename:", fname, ", UNC=", shellLink.GetPath(shell.SLGP_UNCPRIORITY)[0]) print("Description:", shellLink.GetDescription()) print("Working Directory:", shellLink.GetWorkingDirectory()) print("Icon:", shellLink.GetIconLocation())