OLD | NEW |
| (Empty) |
1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories. | |
2 # See LICENSE for details. | |
3 | |
4 | |
5 """Creation of Windows shortcuts. | |
6 | |
7 Requires win32all. | |
8 """ | |
9 | |
10 from win32com.shell import shell | |
11 import pythoncom | |
12 import os | |
13 | |
14 | |
15 def open(filename): | |
16 """Open an existing shortcut for reading. | |
17 | |
18 @return: The shortcut object | |
19 @rtype: Shortcut | |
20 """ | |
21 sc=Shortcut() | |
22 sc.load(filename) | |
23 return sc | |
24 | |
25 | |
26 class Shortcut: | |
27 """A shortcut on Win32. | |
28 >>> sc=Shortcut(path, arguments, description, workingdir, iconpath, iconidx) | |
29 @param path: Location of the target | |
30 @param arguments: If path points to an executable, optional arguments to | |
31 pass | |
32 @param description: Human-readable decription of target | |
33 @param workingdir: Directory from which target is launched | |
34 @param iconpath: Filename that contains an icon for the shortcut | |
35 @param iconidx: If iconpath is set, optional index of the icon desired | |
36 """ | |
37 | |
38 def __init__(self, | |
39 path=None, | |
40 arguments=None, | |
41 description=None, | |
42 workingdir=None, | |
43 iconpath=None, | |
44 iconidx=0): | |
45 self._base = pythoncom.CoCreateInstance( | |
46 shell.CLSID_ShellLink, None, | |
47 pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink | |
48 ) | |
49 data = map(None, | |
50 ['"%s"' % os.path.abspath(path), arguments, description, | |
51 os.path.abspath(workingdir), os.path.abspath(iconpath)], | |
52 ("SetPath", "SetArguments", "SetDescription", | |
53 "SetWorkingDirectory") ) | |
54 for value, function in data: | |
55 if value and function: | |
56 # call function on each non-null value | |
57 getattr(self, function)(value) | |
58 if iconpath: | |
59 self.SetIconLocation(iconpath, iconidx) | |
60 | |
61 def load( self, filename ): | |
62 """Read a shortcut file from disk.""" | |
63 self._base.QueryInterface(pythoncom.IID_IPersistFile).Load(filename) | |
64 | |
65 def save( self, filename ): | |
66 """Write the shortcut to disk. | |
67 | |
68 The file should be named something.lnk. | |
69 """ | |
70 self._base.QueryInterface(pythoncom.IID_IPersistFile).Save(filename, 0) | |
71 | |
72 def __getattr__( self, name ): | |
73 if name != "_base": | |
74 return getattr(self._base, name) | |
75 raise AttributeError, "%s instance has no attribute %s" % \ | |
76 (self.__class__.__name__, name) | |
OLD | NEW |