一位朋友,Environment.gov.au的Luke Pinner通过电子邮件提供了一个使用核心模块(python
2.5+)的解决方案。由于API调用返回的是unipre,因此被认为是多语言的。在具有日语语言环境的Win7上进行了测试,并在另一台美国英语计算机上通过手动将“开始”菜单更改为指向
%USERPROFILE%Startmenü进行了测试
''' Get windows special folders without pythonwin Example: import specialfolders start_programs = specialfolders.get(specialfolders.PROGRAMS)Code is public domain, do with it what you will.Luke Pinner - Environment.gov.au, 2010 February 10'''#imports use _syntax to mask them from autocomplete IDE'simport ctypes as _ctypesfrom ctypes.wintypes import HWND as _HWND, HANDLE as _HANDLE,DWORD as _DWORD,LPCWSTR as _LPCWSTR,MAX_PATH as _MAX_PATH, create_unipre_buffer as _cub_SHGetFolderPath = _ctypes.windll.shell32.SHGetFolderPathW#public special folder constantsDESKTOP= 0PROGRAMS= 2MYdocumentS= 5FAVORITES= 6STARTUP= 7RECENT= 8SENDTO= 9STARTMENU= 11MYMUSIC= 13MYVIDEOS= 14NETHOOD= 19FonTS= 20TEMPLATES= 21ALLUSERSSTARTMENU= 22ALLUSERSPROGRAMS= 23ALLUSERSSTARTUP= 24ALLUSERSDESKTOP= 25APPLICATIonDATA= 26PRINTHOOD= 27LOCALSETTINGSAPPLICATIonDATA= 28ALLUSERSFAVORITES= 31LOCALSETTINGSTEMPORARYINTERNETFILES=32cookieS= 33LOCALSETTINGSHISTORY= 34ALLUSERSAPPLICATIonDATA= 35def get(intFolder): _SHGetFolderPath.argtypes = [_HWND, _ctypes.c_int, _HANDLE, _DWORD, _LPCWSTR] auPathBuffer = _cub(_MAX_PATH) exit_pre=_SHGetFolderPath(0, intFolder, 0, 0, auPathBuffer) return auPathBuffer.value
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)