123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import pythoncom
- from win32com.shell import shell, shellcon
- import win32api, os
- class InternetShortcut:
- def __init__( self ):
- self._base = pythoncom.CoCreateInstance(
- shell.CLSID_InternetShortcut, None,
- pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IUniformResourceLocator
- )
- 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, 1 )
- def __getattr__( self, name ):
- if name != "_base":
- return getattr( self._base, name )
- temp_dir=win32api.GetTempPath()
- linkname=win32api.GetTempFileName(temp_dir, 'ish')[0]
- print 'Link:',linkname
- os.remove(linkname)
- linkname+='.url'
- ish=InternetShortcut()
- ish.SetURL('https://github.com/mhammond/pywin32')
- ish.save(linkname)
- ## IUniformResourceLocator also give access to IPropertySetStorage
- pss=ish.QueryInterface(pythoncom.IID_IPropertySetStorage)
- ps=pss.Open(shell.FMTID_InternetSite)
- property_ids=[(k,v) for k,v in shellcon.__dict__.iteritems() if k.startswith('PID_INTSITE_')]
- for pname, pval in property_ids:
- print pname, ps.ReadMultiple((pval,))[0]
- ps=pss.Open(shell.FMTID_Intshcut)
- property_ids=[(k,v) for k,v in shellcon.__dict__.iteritems() if k.startswith('PID_IS_')]
- for pname, pval in property_ids:
- print pname, ps.ReadMultiple((pval,))[0]
- new_sh=InternetShortcut()
- new_sh.load(linkname)
- new_sh.InvokeCommand('Open')
|