You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/win32comext/shell/demos/create_link.py

53 lines
1.8 KiB

# link.py
# From a demo by Mark Hammond, corrupted by Mike Fletcher
# (and re-corrupted by Mark Hammond :-)
from win32com.shell import shell
import pythoncom, os
class PyShortcut:
def __init__( self ):
self._base = pythoncom.CoCreateInstance(
shell.CLSID_ShellLink, None,
pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink
)
def load( self, filename ):
# Get an IPersist interface
# which allows save/restore of object to/from files
self._base.QueryInterface( pythoncom.IID_IPersistFile ).Load( filename )
def save( self, filename ):
self._base.QueryInterface( pythoncom.IID_IPersistFile ).Save( filename, 0 )
def __getattr__( self, name ):
if name != "_base":
return getattr( self._base, name )
if __name__=='__main__':
import sys
if len(sys.argv)<2:
print("Usage: %s LinkFile [path [, args[, description[, working_dir]]]]\n\nIf LinkFile does not exist, it will be created using the other args")
sys.exit(1)
file = sys.argv[1]
shortcut = PyShortcut()
if os.path.exists( file ):
# load and dump info from file...
shortcut.load( file )
# now print data...
print('Shortcut in file %s to file:\n\t%s\nArguments:\n\t%s\nDescription:\n\t%s\nWorking Directory:\n\t%s\nItemIDs:\n\t<skipped>'%(
file,
shortcut.GetPath(shell.SLGP_SHORTPATH)[0],
shortcut.GetArguments(),
shortcut.GetDescription(),
shortcut.GetWorkingDirectory(),
#shortcut.GetIDList(),
))
else:
if len(sys.argv) <3:
print("Link file does not exist\nYou must supply the path, args, description and working_dir as args")
sys.exit(1)
# create the shortcut using rest of args...
data = map( None, sys.argv[2:], ("SetPath", "SetArguments", "SetDescription", "SetWorkingDirectory") )
for value, function in data:
if value and function:
# call function on each non-null value
getattr( shortcut, function)( value )
shortcut.save( file )