1''' Get windows special folders without pythonwin
2    Example:
3            import specialfolders
4            start_programs = specialfolders.get(specialfolders.PROGRAMS)
5
6Code is public domain, do with it what you will.
7
8Luke Pinner - Environment.gov.au, 2010 February 10
9'''
10
11#Imports use _syntax to mask them from autocomplete IDE's
12import ctypes as _ctypes
13from ctypes import create_unicode_buffer as _cub
14from ctypes.wintypes import HWND as _HWND, HANDLE as _HANDLE,DWORD as _DWORD,LPCWSTR as _LPCWSTR,MAX_PATH as _MAX_PATH
15_SHGetFolderPath = _ctypes.windll.shell32.SHGetFolderPathW
16
17#public special folder constants
18DESKTOP=                             0
19PROGRAMS=                            2
20MYDOCUMENTS=                         5
21FAVORITES=                           6
22STARTUP=                             7
23RECENT=                              8
24SENDTO=                              9
25STARTMENU=                          11
26MYMUSIC=                            13
27MYVIDEOS=                           14
28NETHOOD=                            19
29FONTS=                              20
30TEMPLATES=                          21
31ALLUSERSSTARTMENU=                  22
32ALLUSERSPROGRAMS=                   23
33ALLUSERSSTARTUP=                    24
34ALLUSERSDESKTOP=                    25
35APPLICATIONDATA=                    26
36PRINTHOOD=                          27
37LOCALSETTINGSAPPLICATIONDATA=       28
38ALLUSERSFAVORITES=                  31
39LOCALSETTINGSTEMPORARYINTERNETFILES=32
40COOKIES=                            33
41LOCALSETTINGSHISTORY=               34
42ALLUSERSAPPLICATIONDATA=            35
43
44def get(intFolder):
45    _SHGetFolderPath.argtypes = [_HWND, _ctypes.c_int, _HANDLE, _DWORD, _LPCWSTR]
46    auPathBuffer = _cub(_MAX_PATH)
47    exit_code=_SHGetFolderPath(0, intFolder, 0, 0, auPathBuffer)
48    return auPathBuffer.value
49
50
51if __name__ == "__main__":
52	import os
53	print(get(STARTUP))
54	open(get(STARTUP)+"\\zeronet.cmd", "w").write("cd /D %s\r\nzeronet.py" % os.getcwd())