]>
Commit | Line | Data |
---|---|---|
ff7c6d11 XL |
1 | // Licensed under the Apache License, Version 2.0 |
2 | // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
3 | // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. | |
4 | // All files in the project carrying such notice may not be copied, modified, or distributed | |
5 | // except according to those terms. | |
6 | use ctypes::{c_int, c_void}; | |
7 | use shared::guiddef::REFIID; | |
8 | use shared::minwindef::{BOOL, DWORD, UINT}; | |
9 | use shared::windef::HWND; | |
10 | use um::minwinbase::SECURITY_ATTRIBUTES; | |
11 | use um::shtypes::{PCIDLIST_ABSOLUTE, PCUITEMID_CHILD_ARRAY, PIDLIST_ABSOLUTE, REFKNOWNFOLDERID}; | |
12 | use um::winnt::{HANDLE, HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PWSTR}; | |
13 | pub const IDO_SHGIOI_SHARE: c_int = 0x0FFFFFFF; | |
14 | pub const IDO_SHGIOI_LINK: c_int = 0x0FFFFFFE; | |
15 | // Yes, these values are supposed to be 9 digits | |
16 | pub const IDO_SHGIOI_SLOWFILE: c_int = 0x0FFFFFFFD; | |
17 | pub const IDO_SHGIOI_DEFAULT: c_int = 0x0FFFFFFFC; | |
18 | extern "system" { | |
19 | pub fn SHGetIconOverlayIndexA( | |
20 | pszIconPath: LPCSTR, | |
21 | iIconIndex: c_int, | |
22 | ) -> c_int; | |
23 | pub fn SHGetIconOverlayIndexW( | |
24 | pszIconPath: LPCWSTR, | |
25 | iIconIndex: c_int, | |
26 | ) -> c_int; | |
27 | } | |
28 | pub const GPFIDL_DEFAULT: GPFIDL_FLAGS = 0x0000; | |
29 | pub const GPFIDL_ALTNAME: GPFIDL_FLAGS = 0x0001; | |
30 | pub const GPFIDL_UNCPRINTER: GPFIDL_FLAGS = 0x0002; | |
31 | pub type GPFIDL_FLAGS = c_int; | |
32 | extern "system" { | |
33 | pub fn SHGetPathFromIDListEx( | |
34 | pidl: PCIDLIST_ABSOLUTE, | |
35 | pszPath: PWSTR, | |
36 | cchPath: DWORD, | |
37 | uOpts: GPFIDL_FLAGS, | |
38 | ) -> BOOL; | |
39 | pub fn SHGetPathFromIDListA( | |
40 | pidl: PCIDLIST_ABSOLUTE, | |
41 | pszPath: LPSTR, | |
42 | ) -> BOOL; | |
43 | pub fn SHGetPathFromIDListW( | |
44 | pidl: PCIDLIST_ABSOLUTE, | |
45 | pszPath: LPWSTR, | |
46 | ) -> BOOL; | |
47 | pub fn SHCreateDirectory( | |
48 | hwnd: HWND, | |
49 | pszPath: PCWSTR, | |
50 | ) -> c_int; | |
51 | pub fn SHCreateDirectoryExA( | |
52 | hwnd: HWND, | |
53 | pszPath: LPCSTR, | |
54 | psa: *const SECURITY_ATTRIBUTES, | |
55 | ) -> c_int; | |
56 | pub fn SHCreateDirectoryExW( | |
57 | hwnd: HWND, | |
58 | pszPath: LPCWSTR, | |
59 | psa: *const SECURITY_ATTRIBUTES, | |
60 | ) -> c_int; | |
61 | } | |
62 | pub const OFASI_EDIT: DWORD = 0x0001; | |
63 | pub const OFASI_OPENDESKTOP: DWORD = 0x0002; | |
64 | extern "system" { | |
65 | pub fn SHOpenFolderAndSelectItems( | |
66 | pidlFolder: PCIDLIST_ABSOLUTE, | |
67 | cidl: UINT, | |
68 | apidl: PCUITEMID_CHILD_ARRAY, | |
69 | dwFlags: DWORD, | |
70 | ) -> HRESULT; | |
71 | //pub fn SHCreateShellItem( | |
72 | // pidlParent: PCIDLIST_ABSOLUTE, | |
73 | // psfParent: *mut IShellFolder, | |
74 | // pidl: PCUITEMID_CHILD, | |
75 | // ppsi: *mut *mut IShellItem, | |
76 | //) -> HRESULT; | |
77 | } | |
78 | pub const CSIDL_DESKTOP: c_int = 0x0000; | |
79 | pub const CSIDL_INTERNET: c_int = 0x0001; | |
80 | pub const CSIDL_PROGRAMS: c_int = 0x0002; | |
81 | pub const CSIDL_CONTROLS: c_int = 0x0003; | |
82 | pub const CSIDL_PRINTERS: c_int = 0x0004; | |
83 | pub const CSIDL_PERSONAL: c_int = 0x0005; | |
84 | pub const CSIDL_FAVORITES: c_int = 0x0006; | |
85 | pub const CSIDL_STARTUP: c_int = 0x0007; | |
86 | pub const CSIDL_RECENT: c_int = 0x0008; | |
87 | pub const CSIDL_SENDTO: c_int = 0x0009; | |
88 | pub const CSIDL_BITBUCKET: c_int = 0x000a; | |
89 | pub const CSIDL_STARTMENU: c_int = 0x000b; | |
90 | pub const CSIDL_MYDOCUMENTS: c_int = CSIDL_PERSONAL; | |
91 | pub const CSIDL_MYMUSIC: c_int = 0x000d; | |
92 | pub const CSIDL_MYVIDEO: c_int = 0x000e; | |
93 | pub const CSIDL_DESKTOPDIRECTORY: c_int = 0x0010; | |
94 | pub const CSIDL_DRIVES: c_int = 0x0011; | |
95 | pub const CSIDL_NETWORK: c_int = 0x0012; | |
96 | pub const CSIDL_NETHOOD: c_int = 0x0013; | |
97 | pub const CSIDL_FONTS: c_int = 0x0014; | |
98 | pub const CSIDL_TEMPLATES: c_int = 0x0015; | |
99 | pub const CSIDL_COMMON_STARTMENU: c_int = 0x0016; | |
100 | pub const CSIDL_COMMON_PROGRAMS: c_int = 0x0017; | |
101 | pub const CSIDL_COMMON_STARTUP: c_int = 0x0018; | |
102 | pub const CSIDL_COMMON_DESKTOPDIRECTORY: c_int = 0x0019; | |
103 | pub const CSIDL_APPDATA: c_int = 0x001a; | |
104 | pub const CSIDL_PRINTHOOD: c_int = 0x001b; | |
105 | pub const CSIDL_LOCAL_APPDATA: c_int = 0x001c; | |
106 | pub const CSIDL_ALTSTARTUP: c_int = 0x001d; | |
107 | pub const CSIDL_COMMON_ALTSTARTUP: c_int = 0x001e; | |
108 | pub const CSIDL_COMMON_FAVORITES: c_int = 0x001f; | |
109 | pub const CSIDL_INTERNET_CACHE: c_int = 0x0020; | |
110 | pub const CSIDL_COOKIES: c_int = 0x0021; | |
111 | pub const CSIDL_HISTORY: c_int = 0x0022; | |
112 | pub const CSIDL_COMMON_APPDATA: c_int = 0x0023; | |
113 | pub const CSIDL_WINDOWS: c_int = 0x0024; | |
114 | pub const CSIDL_SYSTEM: c_int = 0x0025; | |
115 | pub const CSIDL_PROGRAM_FILES: c_int = 0x0026; | |
116 | pub const CSIDL_MYPICTURES: c_int = 0x0027; | |
117 | pub const CSIDL_PROFILE: c_int = 0x0028; | |
118 | pub const CSIDL_SYSTEMX86: c_int = 0x0029; | |
119 | pub const CSIDL_PROGRAM_FILESX86: c_int = 0x002a; | |
120 | pub const CSIDL_PROGRAM_FILES_COMMON: c_int = 0x002b; | |
121 | pub const CSIDL_PROGRAM_FILES_COMMONX86: c_int = 0x002c; | |
122 | pub const CSIDL_COMMON_TEMPLATES: c_int = 0x002d; | |
123 | pub const CSIDL_COMMON_DOCUMENTS: c_int = 0x002e; | |
124 | pub const CSIDL_COMMON_ADMINTOOLS: c_int = 0x002f; | |
125 | pub const CSIDL_ADMINTOOLS: c_int = 0x0030; | |
126 | pub const CSIDL_CONNECTIONS: c_int = 0x0031; | |
127 | pub const CSIDL_COMMON_MUSIC: c_int = 0x0035; | |
128 | pub const CSIDL_COMMON_PICTURES: c_int = 0x0036; | |
129 | pub const CSIDL_COMMON_VIDEO: c_int = 0x0037; | |
130 | pub const CSIDL_RESOURCES: c_int = 0x0038; | |
131 | pub const CSIDL_RESOURCES_LOCALIZED: c_int = 0x0039; | |
132 | pub const CSIDL_COMMON_OEM_LINKS: c_int = 0x003a; | |
133 | pub const CSIDL_CDBURN_AREA: c_int = 0x003b; | |
134 | pub const CSIDL_COMPUTERSNEARME: c_int = 0x003d; | |
135 | pub const CSIDL_FLAG_CREATE: c_int = 0x8000; | |
136 | pub const CSIDL_FLAG_DONT_VERIFY: c_int = 0x4000; | |
137 | pub const CSIDL_FLAG_DONT_UNEXPAND: c_int = 0x2000; | |
138 | pub const CSIDL_FLAG_NO_ALIAS: c_int = 0x1000; | |
139 | pub const CSIDL_FLAG_PER_USER_INIT: c_int = 0x0800; | |
140 | pub const CSIDL_FLAG_MASK: c_int = 0xff00; | |
141 | extern "system" { | |
142 | pub fn SHGetSpecialFolderLocation( | |
143 | hwnd: HWND, | |
144 | csidl: c_int, | |
145 | ppidl: *mut PIDLIST_ABSOLUTE, | |
146 | ) -> HRESULT; | |
147 | pub fn SHCloneSpecialIDList( | |
148 | hwnd: HWND, | |
149 | csidl: c_int, | |
150 | fCreate: BOOL, | |
151 | ) -> PIDLIST_ABSOLUTE; | |
152 | pub fn SHGetSpecialFolderPathA( | |
153 | hwnd: HWND, | |
154 | pszPath: LPSTR, | |
155 | csidl: c_int, | |
156 | fCreate: BOOL, | |
157 | ) -> BOOL; | |
158 | pub fn SHGetSpecialFolderPathW( | |
159 | hwnd: HWND, | |
160 | pszPath: LPWSTR, | |
161 | csidl: c_int, | |
162 | fCreate: BOOL, | |
163 | ) -> BOOL; | |
164 | pub fn SHFlushSFCache(); | |
165 | } | |
166 | ENUM!{enum SHGFP_TYPE { | |
167 | SHGFP_TYPE_CURRENT = 0, | |
168 | SHGFP_TYPE_DEFAULT = 1, | |
169 | }} | |
170 | extern "system" { | |
171 | pub fn SHGetFolderPathA( | |
172 | hwnd: HWND, | |
173 | csidl: c_int, | |
174 | hToken: HANDLE, | |
175 | dwFlags: DWORD, | |
176 | pszPath: LPSTR, | |
177 | ) -> HRESULT; | |
178 | pub fn SHGetFolderPathW( | |
179 | hwnd: HWND, | |
180 | csidl: c_int, | |
181 | hToken: HANDLE, | |
182 | dwFlags: DWORD, | |
183 | pszPath: LPWSTR, | |
184 | ) -> HRESULT; | |
185 | pub fn SHGetFolderLocation( | |
186 | hwnd: HWND, | |
187 | csidl: c_int, | |
188 | hToken: HANDLE, | |
189 | dwFlags: DWORD, | |
190 | ppidl: *mut PIDLIST_ABSOLUTE, | |
191 | ) -> HRESULT; | |
192 | pub fn SHSetFolderPathA( | |
193 | csidl: c_int, | |
194 | hToken: HANDLE, | |
195 | dwFlags: DWORD, | |
196 | pszPath: LPCSTR, | |
197 | ) -> HRESULT; | |
198 | pub fn SHSetFolderPathW( | |
199 | csidl: c_int, | |
200 | hToken: HANDLE, | |
201 | dwFlags: DWORD, | |
202 | pszPath: LPCWSTR, | |
203 | ) -> HRESULT; | |
204 | pub fn SHGetFolderPathAndSubDirA( | |
205 | hwnd: HWND, | |
206 | csidl: c_int, | |
207 | hToken: HANDLE, | |
208 | dwFlags: DWORD, | |
209 | pszSubDir: LPCSTR, | |
210 | pszPath: LPSTR, | |
211 | ) -> HRESULT; | |
212 | pub fn SHGetFolderPathAndSubDirW( | |
213 | hwnd: HWND, | |
214 | csidl: c_int, | |
215 | hToken: HANDLE, | |
216 | dwFlags: DWORD, | |
217 | pszSubDir: LPCWSTR, | |
218 | pszPath: LPWSTR, | |
219 | ) -> HRESULT; | |
220 | } | |
221 | ENUM!{enum KNOWN_FOLDER_FLAG { | |
222 | KF_FLAG_DEFAULT = 0x00000000, | |
223 | KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000, | |
224 | KF_FLAG_CREATE = 0x00008000, | |
225 | KF_FLAG_DONT_VERIFY = 0x00004000, | |
226 | KF_FLAG_DONT_UNEXPAND = 0x00002000, | |
227 | KF_FLAG_NO_ALIAS = 0x00001000, | |
228 | KF_FLAG_INIT = 0x00000800, | |
229 | KF_FLAG_DEFAULT_PATH = 0x00000400, | |
230 | KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200, | |
231 | KF_FLAG_SIMPLE_IDLIST = 0x00000100, | |
232 | KF_FLAG_ALIAS_ONLY = 0x80000000, | |
233 | }} | |
234 | extern "system" { | |
235 | pub fn SHGetKnownFolderIDList( | |
236 | rfid: REFKNOWNFOLDERID, | |
237 | dwFlags: DWORD, | |
238 | hToken: HANDLE, | |
239 | ppidl: *mut PIDLIST_ABSOLUTE, | |
240 | ) -> HRESULT; | |
241 | pub fn SHSetKnownFolderPath( | |
242 | rfid: REFKNOWNFOLDERID, | |
243 | dwFlags: DWORD, | |
244 | hToken: HANDLE, | |
245 | pszPath: PCWSTR, | |
246 | ) -> HRESULT; | |
247 | pub fn SHGetKnownFolderPath( | |
248 | rfid: REFKNOWNFOLDERID, | |
249 | dwFlags: DWORD, | |
250 | hToken: HANDLE, | |
251 | pszPath: *mut PWSTR, | |
252 | ) -> HRESULT; | |
253 | pub fn SHGetKnownFolderItem( | |
254 | rfid: REFKNOWNFOLDERID, | |
255 | flags: KNOWN_FOLDER_FLAG, | |
256 | hToken: HANDLE, | |
257 | riid: REFIID, | |
258 | ppv: *mut *mut c_void, | |
259 | ) -> HRESULT; | |
260 | } |