|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # Copyright (c) Twisted Matrix Laboratories.
- # See LICENSE for details.
-
-
- """
- Creation of Windows shortcuts.
-
- Requires win32all.
- """
-
- import os
-
- import pythoncom # type: ignore[import]
- from win32com.shell import shell # type: ignore[import]
-
-
- def open(filename):
- """
- Open an existing shortcut for reading.
-
- @return: The shortcut object
- @rtype: Shortcut
- """
- sc = Shortcut()
- sc.load(filename)
- return sc
-
-
- class Shortcut:
- """
- A shortcut on Win32.
- """
-
- def __init__(
- self,
- path=None,
- arguments=None,
- description=None,
- workingdir=None,
- iconpath=None,
- iconidx=0,
- ):
- """
- @param path: Location of the target
- @param arguments: If path points to an executable, optional arguments
- to pass
- @param description: Human-readable description of target
- @param workingdir: Directory from which target is launched
- @param iconpath: Filename that contains an icon for the shortcut
- @param iconidx: If iconpath is set, optional index of the icon desired
- """
- self._base = pythoncom.CoCreateInstance(
- shell.CLSID_ShellLink,
- None,
- pythoncom.CLSCTX_INPROC_SERVER,
- shell.IID_IShellLink,
- )
- if path is not None:
- self.SetPath(os.path.abspath(path))
- if arguments is not None:
- self.SetArguments(arguments)
- if description is not None:
- self.SetDescription(description)
- if workingdir is not None:
- self.SetWorkingDirectory(os.path.abspath(workingdir))
- if iconpath is not None:
- self.SetIconLocation(os.path.abspath(iconpath), iconidx)
-
- def load(self, filename):
- """
- Read a shortcut file from disk.
- """
- self._base.QueryInterface(pythoncom.IID_IPersistFile).Load(
- os.path.abspath(filename)
- )
-
- def save(self, filename):
- """
- Write the shortcut to disk.
-
- The file should be named something.lnk.
- """
- self._base.QueryInterface(pythoncom.IID_IPersistFile).Save(
- os.path.abspath(filename), 0
- )
-
- def __getattr__(self, name):
- return getattr(self._base, name)
|