12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from win32com.shell import shell, shellcon
- import pythoncom, win32api, os, sys
- temp_dir=win32api.GetTempPath()
- linkname=win32api.GetTempFileName(temp_dir,'cmd')[0]
- os.remove(linkname)
- linkname+='.lnk'
- print 'Link name:',linkname
- ish=pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None,
- pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink)
- ish.SetPath(os.environ['cOMSPEC'])
- ish.SetWorkingDirectory(os.path.split(sys.executable)[0])
- ish.SetDescription('shortcut made by python')
- console_props={
- 'Signature':shellcon.NT_CONSOLE_PROPS_SIG,
- 'InsertMode':True,
- 'FullScreen':False, ## True looks like "DOS Mode" from win98!
- 'FontFamily':54,
- 'CursorSize':75, ## pct of character size
- 'ScreenBufferSize':(152, 256),
- 'AutoPosition':False,
- 'FontSize':(4, 5),
- 'FaceName':u'',
- 'HistoryBufferSize':32,
- 'InputBufferSize':0,
- 'QuickEdit':True,
- 'Font':0, ## 0 should always be present, use win32console.GetNumberOfConsoleFonts() to find how many available
- 'FillAttribute':7,
- 'PopupFillAttribute':245,
- 'WindowSize':(128, 32),
- 'WindowOrigin':(0, 0),
- 'FontWeight':400,
- 'HistoryNoDup':False,
- 'NumberOfHistoryBuffers':32,
- ## ColorTable copied from a 'normal' console shortcut, with some obvious changes
- ## These do not appear to be documented. From experimentation, [0] is background, [7] is foreground text
- 'ColorTable':(255, 8388608, 32768, 8421376, 128, 8388736, 32896, 12582912,
- 8421504, 16711680, 65280, 16776960, 255, 16711935, 65535, 16777215)
- }
- ishdl=ish.QueryInterface(shell.IID_IShellLinkDataList)
- ishdl.AddDataBlock(console_props)
- ipf=ish.QueryInterface(pythoncom.IID_IPersistFile)
- ipf.Save(linkname,1)
- os.startfile(linkname)
|