1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
// Copyright © 2015, Peter Atashian
// Licensed under the MIT License <LICENSE.md>
//! FFI bindings to shell32.
#![cfg(all(windows, any(target_arch = "x86", target_arch = "x86_64")))]
extern crate winapi;
use winapi::*;
extern "system" {
    // pub fn AssocCreateForClasses();
    // pub fn AssocGetDetailsOfPropKey();
    // pub fn CheckEscapesW();
    // pub fn CommandLineToArgvW();
    // pub fn DoEnvironmentSubstA();
    // pub fn DoEnvironmentSubstW();
    // pub fn DragAcceptFiles();
    // pub fn DragFinish();
    // pub fn DragQueryFile();
    // pub fn DragQueryFileA();
    // pub fn DragQueryFileAorW();
    // pub fn DragQueryFileW();
    // pub fn DragQueryPoint();
    // pub fn DuplicateIcon();
    // pub fn ExtractAssociatedIconA();
    // pub fn ExtractAssociatedIconExA();
    // pub fn ExtractAssociatedIconExW();
    // pub fn ExtractAssociatedIconW();
    // pub fn ExtractIconA();
    // pub fn ExtractIconEx();
    // pub fn ExtractIconExA();
    // pub fn ExtractIconExW();
    // pub fn ExtractIconW();
    // pub fn FindExecutableA();
    // pub fn FindExecutableW();
    // pub fn GetCurrentProcessExplicitAppUserModelID();
    // pub fn InitNetworkAddressControl();
    // pub fn PathCleanupSpecWorker();
    // pub fn PathIsExeWorker();
    // pub fn SHAddDefaultPropertiesByExt();
    // pub fn SHAddToRecentDocs();
    // pub fn SHAppBarMessage();
    // pub fn SHAssocEnumHandlers();
    // pub fn SHAssocEnumHandlersForProtocolByApplication();
    // pub fn SHBindToFolderIDListParent();
    // pub fn SHBindToFolderIDListParentEx();
    // pub fn SHBindToObject();
    // pub fn SHBindToParent();
    // pub fn SHBrowseForFolder();
    // pub fn SHBrowseForFolderA();
    // pub fn SHBrowseForFolderW();
    // pub fn SHChangeNotify();
    // pub fn SHChangeNotifyRegisterThread();
    pub fn SHCloneSpecialIDList(hwnd: HWND, csidl: c_int, fCreate: BOOL) -> PIDLIST_ABSOLUTE;
    // pub fn SHCoCreateInstanceWorker();
    // pub fn SHCreateAssociationRegistration();
    // pub fn SHCreateDataObject();
    // pub fn SHCreateDefaultContextMenu();
    // pub fn SHCreateDefaultExtractIcon();
    // pub fn SHCreateDefaultPropertiesOp();
    pub fn SHCreateDirectory(hwnd: HWND, pszPath: PCWSTR) -> c_int;
    pub fn SHCreateDirectoryExA(
        hwnd: HWND, pszPath: LPCSTR, psa: *const SECURITY_ATTRIBUTES,
    ) -> c_int;
    pub fn SHCreateDirectoryExW(
        hwnd: HWND, pszPath: LPCWSTR, psa: *const SECURITY_ATTRIBUTES,
    ) -> c_int;
    // pub fn SHCreateDirectoryExWWorker();
    // pub fn SHCreateItemFromIDList();
    // pub fn SHCreateItemFromParsingName();
    // pub fn SHCreateItemFromRelativeName();
    // pub fn SHCreateItemInKnownFolder();
    // pub fn SHCreateItemWithParent();
    // pub fn SHCreateProcessAsUserW();
    // pub fn SHCreateQueryCancelAutoPlayMoniker();
    pub fn SHCreateShellItem(
        pidlParent: PCIDLIST_ABSOLUTE, psfParent: *mut IShellFolder, pidl: PCUITEMID_CHILD,
        ppsi: *mut *mut IShellItem,
    ) -> HRESULT;
    // pub fn SHCreateShellItemArray();
    // pub fn SHCreateShellItemArrayFromDataObject();
    // pub fn SHCreateShellItemArrayFromIDLists();
    // pub fn SHCreateShellItemArrayFromShellItem();
    // pub fn SHEmptyRecycleBinA();
    // pub fn SHEmptyRecycleBinW();
    // pub fn SHEnumerateUnreadMailAccountsW();
    // pub fn SHEvaluateSystemCommandTemplate();
    // pub fn SHFileOperation();
    // pub fn SHFileOperationA();
    // pub fn SHFileOperationW();
    pub fn SHFlushSFCache();
    // pub fn SHFormatDrive();
    // pub fn SHFreeNameMappings();
    // pub fn SHGetDataFromIDListA();
    // pub fn SHGetDataFromIDListW();
    // pub fn SHGetDesktopFolder();
    // pub fn SHGetDesktopFolderWorker();
    // pub fn SHGetDiskFreeSpaceA();
    // pub fn SHGetDiskFreeSpaceExA();
    // pub fn SHGetDiskFreeSpaceExW();
    // pub fn SHGetDriveMedia();
    // pub fn SHGetFileInfo();
    // pub fn SHGetFileInfoA();
    // pub fn SHGetFileInfoW();
    // pub fn SHGetFileInfoWWorker();
    pub fn SHGetFolderLocation(
        hwnd: HWND, csidl: c_int, hToken: HANDLE, dwFlags: DWORD, ppidl: *mut PIDLIST_ABSOLUTE,
    ) -> HRESULT;
    // pub fn SHGetFolderLocationWorker();
    pub fn SHGetFolderPathA(
        hwnd: HWND, csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszPath: LPSTR,
    ) -> HRESULT;
    // pub fn SHGetFolderPathAWorker();
    pub fn SHGetFolderPathAndSubDirA(
        hwnd: HWND, csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszSubDir: LPCSTR,
        pszPath: LPSTR,
    ) -> HRESULT;
    pub fn SHGetFolderPathAndSubDirW(
        hwnd: HWND, csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszSubDir: LPCWSTR,
        pszPath: LPWSTR,
    ) -> HRESULT;
    // pub fn SHGetFolderPathAndSubDirWWorker();
    // pub fn SHGetFolderPathEx();
    pub fn SHGetFolderPathW(
        hwnd: HWND, csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszPath: LPWSTR,
    ) -> HRESULT;
    // pub fn SHGetFolderPathWWorker();
    // pub fn SHGetIDListFromObject();
    pub fn SHGetIconOverlayIndexA(pszIconPath: LPCSTR, iIconIndex: c_int) -> c_int;
    pub fn SHGetIconOverlayIndexW(pszIconPath: LPCWSTR, iIconIndex: c_int) -> c_int;
    // pub fn SHGetInstanceExplorer();
    // pub fn SHGetInstanceExplorerWorker();
    // pub fn SHGetItemFromDataObject();
    // pub fn SHGetItemFromObject();
    pub fn SHGetKnownFolderIDList(
        rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, ppidl: *mut PIDLIST_ABSOLUTE,
    ) -> HRESULT;
    pub fn SHGetKnownFolderItem(
        rfid: REFKNOWNFOLDERID, flags: KNOWN_FOLDER_FLAG, hToken: HANDLE, riid: REFIID,
        ppv: *mut *mut c_void,
    ) -> HRESULT;
    pub fn SHGetKnownFolderPath(
        rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, pszPath: *mut PWSTR,
    ) -> HRESULT;
    // pub fn SHGetKnownFolderPathWorker();
    // pub fn SHGetLocalizedName();
    // pub fn SHGetMalloc();
    // pub fn SHGetNameFromIDList();
    // pub fn SHGetPathFromIDList();
    pub fn SHGetPathFromIDListA(pidl: PCIDLIST_ABSOLUTE, pszPath: LPSTR) -> BOOL;
    pub fn SHGetPathFromIDListEx(
        pidl: PCIDLIST_ABSOLUTE, pszPath: PWSTR, cchPath: DWORD, uOpts: GPFIDL_FLAGS,
    ) -> BOOL;
    pub fn SHGetPathFromIDListW(pidl: PCIDLIST_ABSOLUTE, pszPath: LPWSTR) -> BOOL;
    // pub fn SHGetPropertyStoreForWindow();
    // pub fn SHGetPropertyStoreFromIDList();
    // pub fn SHGetPropertyStoreFromParsingName();
    // pub fn SHGetSettings();
    pub fn SHGetSpecialFolderLocation(
        hwnd: HWND, csidl: c_int, ppidl: *mut PIDLIST_ABSOLUTE,
    ) -> HRESULT;
    pub fn SHGetSpecialFolderPathA(
        hwnd: HWND, pszPath: LPSTR, csidl: c_int, fCreate: BOOL,
    ) -> BOOL;
    // pub fn SHGetSpecialFolderPathAWorker();
    pub fn SHGetSpecialFolderPathW(
        hwnd: HWND, pszPath: LPWSTR, csidl: c_int, fCreate: BOOL,
    ) -> BOOL;
    // pub fn SHGetSpecialFolderPathWWorker();
    // pub fn SHGetStockIconInfo();
    // pub fn SHGetTemporaryPropertyForItem();
    // pub fn SHGetUnreadMailCountW();
    // pub fn SHInvokePrinterCommandA();
    // pub fn SHInvokePrinterCommandW();
    // pub fn SHIsFileAvailableOffline();
    // pub fn SHLoadInProc();
    // pub fn SHLoadNonloadedIconOverlayIdentifiers();
    pub fn SHOpenFolderAndSelectItems(
        pidlFolder: PCIDLIST_ABSOLUTE, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, dwFlags: DWORD,
    ) -> HRESULT;
    // pub fn SHOpenWithDialog();
    // pub fn SHParseDisplayName();
    // pub fn SHPathPrepareForWriteA();
    // pub fn SHPathPrepareForWriteW();
    // pub fn SHQueryRecycleBinA();
    // pub fn SHQueryRecycleBinW();
    // pub fn SHQueryUserNotificationState();
    // pub fn SHRemoveLocalizedName();
    // pub fn SHResolveLibrary();
    // pub fn SHSetDefaultProperties();
    pub fn SHSetFolderPathA(
        csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCSTR,
    ) -> HRESULT;
    pub fn SHSetFolderPathW(
        csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszPath: LPCWSTR,
    ) -> HRESULT;
    pub fn SHSetKnownFolderPath(
        rfid: REFKNOWNFOLDERID, dwFlags: DWORD, hToken: HANDLE, pszPath: PCWSTR,
    ) -> HRESULT;
    // pub fn SHSetKnownFolderPathWorker();
    // pub fn SHSetLocalizedName();
    // pub fn SHSetTemporaryPropertyForItem();
    // pub fn SHSetUnreadMailCountW();
    // pub fn SHShowManageLibraryUI();
    // pub fn SetCurrentProcessExplicitAppUserModelID();
    // pub fn ShellAboutA();
    // pub fn ShellAboutW();
    // pub fn ShellExecuteA();
    // pub fn ShellExecuteEx();
    // pub fn ShellExecuteExA();
    // pub fn ShellExecuteExW();
    // pub fn ShellExecuteW();
    // pub fn ShellHookProc();
    // pub fn Shell_GetCachedImageIndexA();
    // pub fn Shell_GetCachedImageIndexW();
    // pub fn Shell_NotifyIcon();
    // pub fn Shell_NotifyIconA();
    // pub fn Shell_NotifyIconGetRect();
    // pub fn Shell_NotifyIconW();
    // pub fn WOWShellExecute();
}