@bun-win32/shell32 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1717 @@
1
+ import { type FFIFunction, FFIType, dlopen } from 'bun:ffi';
2
+
3
+ import type {
4
+ ASSOC_FILTER,
5
+ BOOL,
6
+ DWORD,
7
+ DWORD_PTR,
8
+ GETPROPERTYSTOREFLAGS,
9
+ HANDLE,
10
+ HDROP,
11
+ HICON,
12
+ HIMAGELIST,
13
+ HINSTANCE,
14
+ HKEY,
15
+ HMENU,
16
+ HPSXA,
17
+ HRESULT,
18
+ HWND,
19
+ INT,
20
+ INT_PTR,
21
+ LONG,
22
+ LPARAM,
23
+ LPAUTO_SCROLL_DATA,
24
+ LPBROWSEINFOA,
25
+ LPBROWSEINFOW,
26
+ LPCSHITEMID,
27
+ LPCSTR,
28
+ LPCVOID,
29
+ LPCWSTR,
30
+ LPDWORD,
31
+ LPFNADDPROPSHEETPAGE,
32
+ LPFNDFMCALLBACK,
33
+ LPPOINT,
34
+ LPRECT,
35
+ LPSECURITY_ATTRIBUTES,
36
+ LPSHCREATEPROCESSINFOW,
37
+ LPSHELLEXECUTEINFOA,
38
+ LPSHELLEXECUTEINFOW,
39
+ LPSHELLSTATE,
40
+ LPSHFOLDERCUSTOMSETTINGS,
41
+ LPSHFILEINFOA,
42
+ LPSHFILEINFOW,
43
+ LPSHFILEOPSTRUCTA,
44
+ LPSHFILEOPSTRUCTW,
45
+ LPSHELLFLAGSTATE,
46
+ LPSHSTOCKICONINFO,
47
+ LPSTR,
48
+ LPVOID,
49
+ LPWORD,
50
+ LPWSTR,
51
+ LRESULT,
52
+ NULL,
53
+ PACKED_POINT,
54
+ PAPPBARDATA,
55
+ PCABINETSTATE,
56
+ PCDEFCONTEXTMENU,
57
+ PCIDLIST_ABSOLUTE,
58
+ PCUITEMID_CHILD,
59
+ PCUITEMID_CHILD_ARRAY,
60
+ PCUIDLIST_RELATIVE,
61
+ PCUIDLIST_RELATIVE_ARRAY,
62
+ PDLLVERSIONINFO,
63
+ PIDLIST_ABSOLUTE,
64
+ PIDLIST_RELATIVE,
65
+ PNOTIFYICONIDENTIFIER,
66
+ PNOTIFYICONDATAA,
67
+ PNOTIFYICONDATAW,
68
+ POPENASINFO,
69
+ PSFV_CREATE,
70
+ PSHCHANGENOTIFYENTRY,
71
+ PSHQUERYRBINFO,
72
+ PUIDLIST_RELATIVE,
73
+ PUITEMID_CHILD,
74
+ PWSTR,
75
+ SFGAOF,
76
+ SIGDN,
77
+ SIZE_T,
78
+ UINT,
79
+ UINT_PTR,
80
+ ULONG,
81
+ WORD,
82
+ } from '../types/Shell32';
83
+
84
+ /**
85
+ * Thin, lazy-loaded FFI bindings for `shell32.dll`.
86
+ *
87
+ * Each static method corresponds one-to-one with a Win32 export declared in `Symbols`.
88
+ * The first call to a method binds the underlying native symbol via `bun:ffi` and
89
+ * memoizes it on the class for subsequent calls. For bulk, up-front binding, use `Preload`.
90
+ *
91
+ * Symbols are defined with explicit `FFIType` signatures and kept alphabetized.
92
+ * You normally do not access `Symbols` directly; call the static methods or preload
93
+ * a subset for hot paths.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * import Shell32 from './structs/Shell32';
98
+ *
99
+ * // Lazy: bind on first call
100
+ * const path = Buffer.alloc(520);
101
+ * Shell32.SHGetFolderPathW(0n, 0x001C, 0n, 0, path.ptr);
102
+ *
103
+ * // Or preload a subset to avoid per-symbol lazy binding cost
104
+ * Shell32.Preload(['SHGetKnownFolderPath', 'ShellExecuteW']);
105
+ * ```
106
+ */
107
+ class Shell32 {
108
+ /**
109
+ * Lazily binds a single `shell32.dll` export and memoizes it on the class.
110
+ *
111
+ * If the symbol has already been bound (property is non-configurable), this is a no-op.
112
+ * Subsequent calls go directly through the memoized native function.
113
+ *
114
+ * @param method Exact export name from `Symbols`.
115
+ * @returns The bound native function, typed to the corresponding static method.
116
+ * @example
117
+ * ```ts
118
+ * // Internal usage: public wrappers call Load on first invocation
119
+ * // return Shell32.Load('SHGetKnownFolderPath')();
120
+ * ```
121
+ */
122
+ private static Load<T extends keyof typeof Shell32.Symbols>(method: T): (typeof Shell32)[T] {
123
+ const skip = Object.getOwnPropertyDescriptor(Shell32, method)?.configurable === false;
124
+
125
+ if (skip) {
126
+ return Shell32[method];
127
+ }
128
+
129
+ const library = dlopen('shell32.dll', { [method]: Shell32.Symbols[method] });
130
+
131
+ const propertyDescriptor = { configurable: false, value: library.symbols[method] };
132
+ Object.defineProperty(Shell32, method, propertyDescriptor);
133
+
134
+ return Shell32[method];
135
+ }
136
+
137
+ /**
138
+ * Eagerly binds one or more `shell32.dll` exports in a single `dlopen` call.
139
+ *
140
+ * When called with no arguments, every symbol in `Symbols` is bound.
141
+ * Already-bound symbols are skipped.
142
+ *
143
+ * @param methods Optional list of export names to preload. Defaults to all symbols.
144
+ * @example
145
+ * ```ts
146
+ * // Preload specific hot-path symbols
147
+ * Shell32.Preload(['ShellExecuteW', 'SHGetKnownFolderPath', 'SHGetFileInfoW']);
148
+ *
149
+ * // Or preload everything
150
+ * Shell32.Preload();
151
+ * ```
152
+ */
153
+ public static Preload(methods?: (keyof typeof Shell32.Symbols)[]): void {
154
+ methods ??= Object.keys(Shell32.Symbols) as (keyof typeof Shell32.Symbols)[];
155
+
156
+ const symbols = Object.fromEntries(
157
+ methods
158
+ .filter((method) => Object.getOwnPropertyDescriptor(Shell32, method)?.configurable !== false)
159
+ .map((method) => [method, Shell32.Symbols[method]])
160
+ );
161
+
162
+ const library = dlopen('shell32.dll', symbols);
163
+
164
+ const propertyDescriptorMap = Object.fromEntries(
165
+ Object.entries(library.symbols).map(([key, value]) => [key, { configurable: false, value }])
166
+ );
167
+
168
+ Object.defineProperties(Shell32, propertyDescriptorMap);
169
+ }
170
+
171
+ // ---------------------------------------------------------------------------
172
+ // FFI symbol declarations — alphabetized
173
+ //
174
+ // FFIType reference:
175
+ // FFIType.i32 → BOOL, int, LONG, HRESULT
176
+ // FFIType.u32 → DWORD, UINT, ULONG
177
+ // FFIType.u64 → HANDLE, HWND, HICON, HDROP, HINSTANCE, HKEY (returned as bigint)
178
+ // FFIType.i64 → INT_PTR, LPARAM, LRESULT
179
+ // FFIType.ptr → any pointer parameter (LPVOID, LPWSTR, LPCWSTR, PIDLIST_ABSOLUTE, etc.)
180
+ // FFIType.void → void return
181
+ //
182
+ // Consult the Win32 docs for each function's exact signature:
183
+ // https://learn.microsoft.com/en-us/windows/win32/api/{header}/nf-{header}-{functionname}
184
+ // ---------------------------------------------------------------------------
185
+ private static readonly Symbols = {
186
+ AssocCreateForClasses: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
187
+ AssocGetDetailsOfPropKey: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
188
+ CDefFolderMenu_Create2: { args: [FFIType.ptr, FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
189
+ CIDLData_CreateFromIDArray: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
190
+ CommandLineToArgvW: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
191
+ DAD_AutoScroll: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
192
+ DAD_DragEnterEx: { args: [FFIType.u64, FFIType.u64], returns: FFIType.i32 },
193
+ DAD_DragEnterEx2: { args: [FFIType.u64, FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
194
+ DAD_DragLeave: { args: [], returns: FFIType.i32 },
195
+ DAD_DragMove: { args: [FFIType.u64], returns: FFIType.i32 },
196
+ DAD_SetDragImage: { args: [FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
197
+ DAD_ShowDragImage: { args: [FFIType.i32], returns: FFIType.i32 },
198
+ DllGetVersion: { args: [FFIType.ptr], returns: FFIType.i32 },
199
+ DoEnvironmentSubstA: { args: [FFIType.ptr, FFIType.u32], returns: FFIType.u32 },
200
+ DoEnvironmentSubstW: { args: [FFIType.ptr, FFIType.u32], returns: FFIType.u32 },
201
+ DragAcceptFiles: { args: [FFIType.u64, FFIType.i32], returns: FFIType.void },
202
+ DragFinish: { args: [FFIType.u64], returns: FFIType.void },
203
+ DragQueryFile: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.u32], returns: FFIType.u32 },
204
+ DragQueryFileA: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.u32], returns: FFIType.u32 },
205
+ DragQueryFileW: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.u32], returns: FFIType.u32 },
206
+ DragQueryPoint: { args: [FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
207
+ DuplicateIcon: { args: [FFIType.u64, FFIType.u64], returns: FFIType.u64 },
208
+ ExtractAssociatedIconA: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr], returns: FFIType.u64 },
209
+ ExtractAssociatedIconExA: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.u64 },
210
+ ExtractAssociatedIconExW: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.u64 },
211
+ ExtractAssociatedIconW: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr], returns: FFIType.u64 },
212
+ ExtractIconA: { args: [FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.u64 },
213
+ ExtractIconEx: { args: [FFIType.ptr, FFIType.i32, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.u32 },
214
+ ExtractIconExA: { args: [FFIType.ptr, FFIType.i32, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.u32 },
215
+ ExtractIconExW: { args: [FFIType.ptr, FFIType.i32, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.u32 },
216
+ ExtractIconW: { args: [FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.u64 },
217
+ FindExecutableA: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.u64 },
218
+ FindExecutableW: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.u64 },
219
+ GetCurrentProcessExplicitAppUserModelID: { args: [FFIType.ptr], returns: FFIType.i32 },
220
+ ILAppendID: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.ptr },
221
+ ILClone: { args: [FFIType.ptr], returns: FFIType.ptr },
222
+ ILCloneFirst: { args: [FFIType.ptr], returns: FFIType.ptr },
223
+ ILCombine: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
224
+ ILCreateFromPath: { args: [FFIType.ptr], returns: FFIType.ptr },
225
+ ILCreateFromPathA: { args: [FFIType.ptr], returns: FFIType.ptr },
226
+ ILCreateFromPathW: { args: [FFIType.ptr], returns: FFIType.ptr },
227
+ ILFindChild: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
228
+ ILFindLastID: { args: [FFIType.ptr], returns: FFIType.ptr },
229
+ ILFree: { args: [FFIType.ptr], returns: FFIType.void },
230
+ ILGetNext: { args: [FFIType.ptr], returns: FFIType.ptr },
231
+ ILGetSize: { args: [FFIType.ptr], returns: FFIType.u32 },
232
+ ILIsEqual: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
233
+ ILIsParent: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
234
+ ILLoadFromStreamEx: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
235
+ ILRemoveLastID: { args: [FFIType.ptr], returns: FFIType.i32 },
236
+ ILSaveToStream: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
237
+ InitNetworkAddressControl: { args: [], returns: FFIType.i32 },
238
+ IsUserAnAdmin: { args: [], returns: FFIType.i32 },
239
+ PathCleanupSpec: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
240
+ PathIsSlowA: { args: [FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
241
+ PathIsSlowW: { args: [FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
242
+ PathMakeUniqueName: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
243
+ PathResolve: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
244
+ PathYetAnotherMakeUniqueName: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
245
+ PickIconDlg: { args: [FFIType.u64, FFIType.ptr, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
246
+ ReadCabinetState: { args: [FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
247
+ RestartDialog: { args: [FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
248
+ RestartDialogEx: { args: [FFIType.u64, FFIType.ptr, FFIType.u32, FFIType.u32], returns: FFIType.i32 },
249
+ SHAddDefaultPropertiesByExt: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
250
+ SHAddFromPropSheetExtArray: { args: [FFIType.u64, FFIType.ptr, FFIType.i64], returns: FFIType.u32 },
251
+ SHAddToRecentDocs: { args: [FFIType.u32, FFIType.ptr], returns: FFIType.void },
252
+ SHAlloc: { args: [FFIType.u64], returns: FFIType.ptr },
253
+ SHAppBarMessage: { args: [FFIType.u32, FFIType.ptr], returns: FFIType.u64 },
254
+ SHAssocEnumHandlers: { args: [FFIType.ptr, FFIType.i32, FFIType.ptr], returns: FFIType.i32 },
255
+ SHAssocEnumHandlersForProtocolByApplication: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
256
+ SHBindToFolderIDListParent: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
257
+ SHBindToFolderIDListParentEx: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
258
+ SHBindToObject: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
259
+ SHBindToParent: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
260
+ SHBrowseForFolder: { args: [FFIType.ptr], returns: FFIType.ptr },
261
+ SHBrowseForFolderA: { args: [FFIType.ptr], returns: FFIType.ptr },
262
+ SHBrowseForFolderW: { args: [FFIType.ptr], returns: FFIType.ptr },
263
+ SHChangeNotification_Lock: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.u64 },
264
+ SHChangeNotification_Unlock: { args: [FFIType.u64], returns: FFIType.i32 },
265
+ SHChangeNotify: { args: [FFIType.i32, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.void },
266
+ SHChangeNotifyDeregister: { args: [FFIType.u32], returns: FFIType.i32 },
267
+ SHChangeNotifyRegister: { args: [FFIType.u64, FFIType.i32, FFIType.i32, FFIType.u32, FFIType.i32, FFIType.ptr], returns: FFIType.u32 },
268
+ SHCreateAssociationRegistration: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
269
+ SHCreateDataObject: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
270
+ SHCreateDefaultContextMenu: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
271
+ SHCreateDefaultExtractIcon: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
272
+ SHCreateDefaultPropertiesOp: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
273
+ SHCreateDirectory: { args: [FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
274
+ SHCreateDirectoryExA: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
275
+ SHCreateDirectoryExW: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
276
+ SHCreateFileExtractIconW: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
277
+ SHCreateItemFromIDList: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
278
+ SHCreateItemFromParsingName: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
279
+ SHCreateItemFromRelativeName: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
280
+ SHCreateItemInKnownFolder: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
281
+ SHCreateItemWithParent: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
282
+ SHCreateProcessAsUserW: { args: [FFIType.ptr], returns: FFIType.i32 },
283
+ SHCreatePropSheetExtArray: { args: [FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.u64 },
284
+ SHCreateQueryCancelAutoPlayMoniker: { args: [FFIType.ptr], returns: FFIType.i32 },
285
+ SHCreateShellFolderView: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
286
+ SHCreateShellFolderViewEx: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
287
+ SHCreateShellItem: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
288
+ SHCreateShellItemArray: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
289
+ SHCreateShellItemArrayFromDataObject: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
290
+ SHCreateShellItemArrayFromIDLists: { args: [FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
291
+ SHCreateShellItemArrayFromShellItem: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
292
+ SHCreateStdEnumFmtEtc: { args: [FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
293
+ SHDefExtractIconA: { args: [FFIType.ptr, FFIType.i32, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
294
+ SHDefExtractIconW: { args: [FFIType.ptr, FFIType.i32, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
295
+ SHDestroyPropSheetExtArray: { args: [FFIType.u64], returns: FFIType.void },
296
+ SHDoDragDrop: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
297
+ SHEmptyRecycleBinA: { args: [FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
298
+ SHEmptyRecycleBinW: { args: [FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
299
+ SHEnumerateUnreadMailAccountsW: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
300
+ SHEvaluateSystemCommandTemplate: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
301
+ SHExtractIconsW: { args: [FFIType.ptr, FFIType.i32, FFIType.i32, FFIType.i32, FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.u32], returns: FFIType.u32 },
302
+ SHFileOperation: { args: [FFIType.ptr], returns: FFIType.i32 },
303
+ SHFileOperationA: { args: [FFIType.ptr], returns: FFIType.i32 },
304
+ SHFileOperationW: { args: [FFIType.ptr], returns: FFIType.i32 },
305
+ SHFormatDrive: { args: [FFIType.u64, FFIType.u32, FFIType.u32, FFIType.u32], returns: FFIType.u32 },
306
+ SHFree: { args: [FFIType.ptr], returns: FFIType.void },
307
+ SHFreeNameMappings: { args: [FFIType.u64], returns: FFIType.void },
308
+ SHGetAttributesFromDataObject: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
309
+ SHGetDataFromIDListA: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
310
+ SHGetDataFromIDListW: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
311
+ SHGetDesktopFolder: { args: [FFIType.ptr], returns: FFIType.i32 },
312
+ SHGetDiskFreeSpaceA: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
313
+ SHGetDiskFreeSpaceExA: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
314
+ SHGetDiskFreeSpaceExW: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
315
+ SHGetDriveMedia: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
316
+ SHGetFileInfo: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.u32, FFIType.u32], returns: FFIType.u64 },
317
+ SHGetFileInfoA: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.u32, FFIType.u32], returns: FFIType.u64 },
318
+ SHGetFileInfoW: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.u32, FFIType.u32], returns: FFIType.u64 },
319
+ SHGetFolderLocation: { args: [FFIType.u64, FFIType.i32, FFIType.u64, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
320
+ SHGetFolderPathA: { args: [FFIType.u64, FFIType.i32, FFIType.u64, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
321
+ SHGetFolderPathAndSubDirA: { args: [FFIType.u64, FFIType.i32, FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
322
+ SHGetFolderPathAndSubDirW: { args: [FFIType.u64, FFIType.i32, FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
323
+ SHGetFolderPathEx: { args: [FFIType.ptr, FFIType.u32, FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
324
+ SHGetFolderPathW: { args: [FFIType.u64, FFIType.i32, FFIType.u64, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
325
+ SHGetIDListFromObject: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
326
+ SHGetIconOverlayIndexA: { args: [FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
327
+ SHGetIconOverlayIndexW: { args: [FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
328
+ SHGetImageList: { args: [FFIType.i32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
329
+ SHGetInstanceExplorer: { args: [FFIType.ptr], returns: FFIType.i32 },
330
+ SHGetItemFromDataObject: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
331
+ SHGetItemFromObject: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
332
+ SHGetKnownFolderIDList: { args: [FFIType.ptr, FFIType.u32, FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
333
+ SHGetKnownFolderItem: { args: [FFIType.ptr, FFIType.u32, FFIType.u64, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
334
+ SHGetKnownFolderPath: { args: [FFIType.ptr, FFIType.u32, FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
335
+ SHGetLocalizedName: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
336
+ SHGetMalloc: { args: [FFIType.ptr], returns: FFIType.i32 },
337
+ SHGetNameFromIDList: { args: [FFIType.ptr, FFIType.i32, FFIType.ptr], returns: FFIType.i32 },
338
+ SHGetNewLinkInfo: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
339
+ SHGetNewLinkInfoA: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
340
+ SHGetNewLinkInfoW: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
341
+ SHGetPathFromIDList: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
342
+ SHGetPathFromIDListA: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
343
+ SHGetPathFromIDListEx: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.u32], returns: FFIType.i32 },
344
+ SHGetPathFromIDListW: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
345
+ SHGetPropertyStoreForWindow: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
346
+ SHGetPropertyStoreFromIDList: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
347
+ SHGetPropertyStoreFromParsingName: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
348
+ SHGetRealIDL: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
349
+ SHGetSetFolderCustomSettings: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
350
+ SHGetSetSettings: { args: [FFIType.ptr, FFIType.u32, FFIType.i32], returns: FFIType.void },
351
+ SHGetSettings: { args: [FFIType.ptr, FFIType.u32], returns: FFIType.void },
352
+ SHGetSpecialFolderLocation: { args: [FFIType.u64, FFIType.i32, FFIType.ptr], returns: FFIType.i32 },
353
+ SHGetSpecialFolderPathA: { args: [FFIType.u64, FFIType.ptr, FFIType.i32, FFIType.i32], returns: FFIType.i32 },
354
+ SHGetSpecialFolderPathW: { args: [FFIType.u64, FFIType.ptr, FFIType.i32, FFIType.i32], returns: FFIType.i32 },
355
+ SHGetStockIconInfo: { args: [FFIType.u32, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
356
+ SHGetTemporaryPropertyForItem: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
357
+ SHGetUnreadMailCountW: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
358
+ SHHandleUpdateImage: { args: [FFIType.ptr], returns: FFIType.i32 },
359
+ SHILCreateFromPath: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
360
+ SHInvokePrinterCommandA: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
361
+ SHInvokePrinterCommandW: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
362
+ SHIsFileAvailableOffline: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
363
+ SHLimitInputEdit: { args: [FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
364
+ SHLoadInProc: { args: [FFIType.ptr], returns: FFIType.i32 },
365
+ SHLoadNonloadedIconOverlayIdentifiers: { args: [], returns: FFIType.i32 },
366
+ SHMapPIDLToSystemImageListIndex: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
367
+ SHMultiFileProperties: { args: [FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
368
+ SHObjectProperties: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
369
+ SHOpenFolderAndSelectItems: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
370
+ SHOpenPropSheetW: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
371
+ SHOpenWithDialog: { args: [FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
372
+ SHParseDisplayName: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
373
+ SHPathPrepareForWriteA: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
374
+ SHPathPrepareForWriteW: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
375
+ SHPropStgCreate: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.u32, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
376
+ SHPropStgReadMultiple: { args: [FFIType.ptr, FFIType.u32, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
377
+ SHPropStgWriteMultiple: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
378
+ SHQueryRecycleBinA: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
379
+ SHQueryRecycleBinW: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
380
+ SHQueryUserNotificationState: { args: [FFIType.ptr], returns: FFIType.i32 },
381
+ SHRemoveLocalizedName: { args: [FFIType.ptr], returns: FFIType.i32 },
382
+ SHReplaceFromPropSheetExtArray: { args: [FFIType.u64, FFIType.u32, FFIType.ptr, FFIType.i64], returns: FFIType.u32 },
383
+ SHResolveLibrary: { args: [FFIType.ptr], returns: FFIType.i32 },
384
+ SHRestricted: { args: [FFIType.u32], returns: FFIType.u32 },
385
+ SHSetDefaultProperties: { args: [FFIType.u64, FFIType.ptr, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
386
+ SHSetFolderPathA: { args: [FFIType.i32, FFIType.u64, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
387
+ SHSetFolderPathW: { args: [FFIType.i32, FFIType.u64, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
388
+ SHSetInstanceExplorer: { args: [FFIType.ptr], returns: FFIType.void },
389
+ SHSetKnownFolderPath: { args: [FFIType.ptr, FFIType.u32, FFIType.u64, FFIType.ptr], returns: FFIType.i32 },
390
+ SHSetLocalizedName: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
391
+ SHSetTemporaryPropertyForItem: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
392
+ SHSetUnreadMailCountW: { args: [FFIType.ptr, FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
393
+ SHShellFolderView_Message: { args: [FFIType.u64, FFIType.u32, FFIType.i64], returns: FFIType.i64 },
394
+ SHShowManageLibraryUI: { args: [FFIType.ptr, FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
395
+ SHSimpleIDListFromPath: { args: [FFIType.ptr], returns: FFIType.ptr },
396
+ SHStartNetConnectionDialogW: { args: [FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
397
+ SHTestTokenMembership: { args: [FFIType.u64, FFIType.u32], returns: FFIType.i32 },
398
+ SHUpdateImageA: { args: [FFIType.ptr, FFIType.i32, FFIType.u32, FFIType.i32], returns: FFIType.void },
399
+ SHUpdateImageW: { args: [FFIType.ptr, FFIType.i32, FFIType.u32, FFIType.i32], returns: FFIType.void },
400
+ SHUpdateRecycleBinIcon: { args: [], returns: FFIType.void },
401
+ SHValidateUNC: { args: [FFIType.u64, FFIType.ptr, FFIType.u32], returns: FFIType.i32 },
402
+ SetCurrentProcessExplicitAppUserModelID: { args: [FFIType.ptr], returns: FFIType.i32 },
403
+ ShellAboutA: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.u64], returns: FFIType.i64 },
404
+ ShellAboutW: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.u64], returns: FFIType.i64 },
405
+ ShellExecuteA: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.u64 },
406
+ ShellExecuteEx: { args: [FFIType.ptr], returns: FFIType.i32 },
407
+ ShellExecuteExA: { args: [FFIType.ptr], returns: FFIType.i32 },
408
+ ShellExecuteExW: { args: [FFIType.ptr], returns: FFIType.i32 },
409
+ ShellExecuteW: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.u64 },
410
+ Shell_GetImageLists: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
411
+ Shell_MergeMenus: { args: [FFIType.u64, FFIType.u64, FFIType.u32, FFIType.u32, FFIType.u32, FFIType.u32], returns: FFIType.u32 },
412
+ Shell_NotifyIcon: { args: [FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
413
+ Shell_NotifyIconA: { args: [FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
414
+ Shell_NotifyIconGetRect: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
415
+ Shell_NotifyIconW: { args: [FFIType.u32, FFIType.ptr], returns: FFIType.i32 },
416
+ SignalFileOpen: { args: [FFIType.ptr], returns: FFIType.i32 },
417
+ StgMakeUniqueName: { args: [FFIType.ptr, FFIType.ptr, FFIType.u32, FFIType.ptr, FFIType.ptr], returns: FFIType.i32 },
418
+ StrChrA: { args: [FFIType.ptr, FFIType.u16], returns: FFIType.ptr },
419
+ StrChrIA: { args: [FFIType.ptr, FFIType.u16], returns: FFIType.ptr },
420
+ StrChrIW: { args: [FFIType.ptr, FFIType.u16], returns: FFIType.ptr },
421
+ StrChrW: { args: [FFIType.ptr, FFIType.u16], returns: FFIType.ptr },
422
+ StrCmpNA: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
423
+ StrCmpNIA: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
424
+ StrCmpNIW: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
425
+ StrCmpNW: { args: [FFIType.ptr, FFIType.ptr, FFIType.i32], returns: FFIType.i32 },
426
+ StrRChrA: { args: [FFIType.ptr, FFIType.ptr, FFIType.u16], returns: FFIType.ptr },
427
+ StrRChrIA: { args: [FFIType.ptr, FFIType.ptr, FFIType.u16], returns: FFIType.ptr },
428
+ StrRChrIW: { args: [FFIType.ptr, FFIType.ptr, FFIType.u16], returns: FFIType.ptr },
429
+ StrRChrW: { args: [FFIType.ptr, FFIType.ptr, FFIType.u16], returns: FFIType.ptr },
430
+ StrRStrIA: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
431
+ StrRStrIW: { args: [FFIType.ptr, FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
432
+ StrStrA: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
433
+ StrStrIA: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
434
+ StrStrIW: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
435
+ StrStrW: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.ptr },
436
+ WOWShellExecute: { args: [FFIType.u64, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.i32, FFIType.ptr], returns: FFIType.u64 },
437
+ Win32DeleteFile: { args: [FFIType.ptr], returns: FFIType.i32 },
438
+ WriteCabinetState: { args: [FFIType.ptr], returns: FFIType.i32 },
439
+ } as const satisfies Record<string, FFIFunction>;
440
+
441
+ // ---------------------------------------------------------------------------
442
+ // Public methods — alphabetized, one per symbol
443
+ //
444
+ // Each method:
445
+ // 1. Has a Microsoft Docs link as a comment above it.
446
+ // 2. Uses Win32 parameter names as-is (hWnd, lpBuffer, dwSize, etc.).
447
+ // 3. Delegates to Load() which lazy-binds on first call.
448
+ // 4. Is typed with aliases from ../types/Shell32.ts.
449
+ // ---------------------------------------------------------------------------
450
+
451
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-assoccreateforclasses
452
+ public static AssocCreateForClasses(rgClasses: LPVOID, cClasses: ULONG, riid: LPVOID, ppv: LPVOID): HRESULT {
453
+ return Shell32.Load('AssocCreateForClasses')(rgClasses, cClasses, riid, ppv);
454
+ }
455
+
456
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-assocgetdetailsofpropkey
457
+ public static AssocGetDetailsOfPropKey(psf: LPVOID, pidl: PCUITEMID_CHILD, pkey: LPVOID, pv: LPVOID, pfFoundPropKey: LPVOID): HRESULT {
458
+ return Shell32.Load('AssocGetDetailsOfPropKey')(psf, pidl, pkey, pv, pfFoundPropKey);
459
+ }
460
+
461
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-cdeffoldeMenu_create2
462
+ public static CDefFolderMenu_Create2(pidlFolder: PCIDLIST_ABSOLUTE | NULL, hwnd: HWND | 0n, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY, psf: LPVOID | NULL, pfn: LPFNDFMCALLBACK | NULL, nKeys: UINT, ahkeys: LPVOID | NULL, ppcm: LPVOID): HRESULT {
463
+ return Shell32.Load('CDefFolderMenu_Create2')(pidlFolder, hwnd, cidl, apidl, psf, pfn, nKeys, ahkeys, ppcm);
464
+ }
465
+
466
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-cidldata_createfromidarray
467
+ public static CIDLData_CreateFromIDArray(pidlFolder: PCIDLIST_ABSOLUTE, cidl: UINT, apidl: PCUIDLIST_RELATIVE_ARRAY, ppdtobj: LPVOID): HRESULT {
468
+ return Shell32.Load('CIDLData_CreateFromIDArray')(pidlFolder, cidl, apidl, ppdtobj);
469
+ }
470
+
471
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw
472
+ public static CommandLineToArgvW(lpCmdLine: LPCWSTR, pNumArgs: LPVOID): LPWSTR {
473
+ return Shell32.Load('CommandLineToArgvW')(lpCmdLine, pNumArgs);
474
+ }
475
+
476
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-dad_autoscroll
477
+ public static DAD_AutoScroll(hwnd: HWND, pad: LPAUTO_SCROLL_DATA, pptNow: LPPOINT): BOOL {
478
+ return Shell32.Load('DAD_AutoScroll')(hwnd, pad, pptNow);
479
+ }
480
+
481
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-dad_dragenterex
482
+ public static DAD_DragEnterEx(hwndTarget: HWND, ptStart: PACKED_POINT): BOOL {
483
+ return Shell32.Load('DAD_DragEnterEx')(hwndTarget, ptStart);
484
+ }
485
+
486
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-dad_dragenterex2
487
+ public static DAD_DragEnterEx2(hwndTarget: HWND, ptStart: PACKED_POINT, pdtObject: LPVOID | NULL): BOOL {
488
+ return Shell32.Load('DAD_DragEnterEx2')(hwndTarget, ptStart, pdtObject);
489
+ }
490
+
491
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-dad_dragleave
492
+ public static DAD_DragLeave(): BOOL {
493
+ return Shell32.Load('DAD_DragLeave')();
494
+ }
495
+
496
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-dad_dragmove
497
+ public static DAD_DragMove(pt: PACKED_POINT): BOOL {
498
+ return Shell32.Load('DAD_DragMove')(pt);
499
+ }
500
+
501
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-dad_setdragimage
502
+ public static DAD_SetDragImage(him: HIMAGELIST, pptOffset: LPPOINT | NULL): BOOL {
503
+ return Shell32.Load('DAD_SetDragImage')(him, pptOffset);
504
+ }
505
+
506
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-dad_showdragimage
507
+ public static DAD_ShowDragImage(fShow: BOOL): BOOL {
508
+ return Shell32.Load('DAD_ShowDragImage')(fShow);
509
+ }
510
+
511
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-dllgetversion
512
+ public static DllGetVersion(pdvi: PDLLVERSIONINFO): HRESULT {
513
+ return Shell32.Load('DllGetVersion')(pdvi);
514
+ }
515
+
516
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-doenvironmentsubsta
517
+ public static DoEnvironmentSubstA(pszSrc: LPSTR, cchSrc: UINT): DWORD {
518
+ return Shell32.Load('DoEnvironmentSubstA')(pszSrc, cchSrc);
519
+ }
520
+
521
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-doenvironmentsubstw
522
+ public static DoEnvironmentSubstW(pszSrc: LPWSTR, cchSrc: UINT): DWORD {
523
+ return Shell32.Load('DoEnvironmentSubstW')(pszSrc, cchSrc);
524
+ }
525
+
526
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-dragacceptfiles
527
+ public static DragAcceptFiles(hWnd: HWND, fAccept: BOOL): void {
528
+ return Shell32.Load('DragAcceptFiles')(hWnd, fAccept);
529
+ }
530
+
531
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-dragfinish
532
+ public static DragFinish(hDrop: HDROP): void {
533
+ return Shell32.Load('DragFinish')(hDrop);
534
+ }
535
+
536
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-dragqueryfilea
537
+ public static DragQueryFile(hDrop: HDROP, iFile: UINT, lpszFile: LPSTR | NULL, cch: UINT): UINT {
538
+ return Shell32.Load('DragQueryFile')(hDrop, iFile, lpszFile, cch);
539
+ }
540
+
541
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-dragqueryfilea
542
+ public static DragQueryFileA(hDrop: HDROP, iFile: UINT, lpszFile: LPSTR | NULL, cch: UINT): UINT {
543
+ return Shell32.Load('DragQueryFileA')(hDrop, iFile, lpszFile, cch);
544
+ }
545
+
546
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-dragqueryfilew
547
+ public static DragQueryFileW(hDrop: HDROP, iFile: UINT, lpszFile: LPWSTR | NULL, cch: UINT): UINT {
548
+ return Shell32.Load('DragQueryFileW')(hDrop, iFile, lpszFile, cch);
549
+ }
550
+
551
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-dragquerypoint
552
+ public static DragQueryPoint(hDrop: HDROP, lppt: LPPOINT): BOOL {
553
+ return Shell32.Load('DragQueryPoint')(hDrop, lppt);
554
+ }
555
+
556
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-duplicateicon
557
+ public static DuplicateIcon(hInst: HINSTANCE | 0n, hIcon: HICON): HICON {
558
+ return Shell32.Load('DuplicateIcon')(hInst, hIcon);
559
+ }
560
+
561
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extractassociatedicona
562
+ public static ExtractAssociatedIconA(hInst: HINSTANCE, pszIconPath: LPSTR, piIcon: LPWORD): HICON {
563
+ return Shell32.Load('ExtractAssociatedIconA')(hInst, pszIconPath, piIcon);
564
+ }
565
+
566
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extractassociatediconexa
567
+ public static ExtractAssociatedIconExA(hInst: HINSTANCE, pszIconPath: LPSTR, piIconIndex: LPWORD, piIconId: LPWORD): HICON {
568
+ return Shell32.Load('ExtractAssociatedIconExA')(hInst, pszIconPath, piIconIndex, piIconId);
569
+ }
570
+
571
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extractassociatediconexw
572
+ public static ExtractAssociatedIconExW(hInst: HINSTANCE, pszIconPath: LPWSTR, piIconIndex: LPWORD, piIconId: LPWORD): HICON {
573
+ return Shell32.Load('ExtractAssociatedIconExW')(hInst, pszIconPath, piIconIndex, piIconId);
574
+ }
575
+
576
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extractassociatediconw
577
+ public static ExtractAssociatedIconW(hInst: HINSTANCE, pszIconPath: LPWSTR, piIcon: LPWORD): HICON {
578
+ return Shell32.Load('ExtractAssociatedIconW')(hInst, pszIconPath, piIcon);
579
+ }
580
+
581
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extracticona
582
+ public static ExtractIconA(hInst: HINSTANCE, pszExeFileName: LPCSTR, nIconIndex: UINT): HICON {
583
+ return Shell32.Load('ExtractIconA')(hInst, pszExeFileName, nIconIndex);
584
+ }
585
+
586
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extracticonexa
587
+ public static ExtractIconEx(lpszFile: LPCSTR, nIconIndex: INT, phiconLarge: LPVOID | NULL, phiconSmall: LPVOID | NULL, nIcons: UINT): UINT {
588
+ return Shell32.Load('ExtractIconEx')(lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons);
589
+ }
590
+
591
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extracticonexa
592
+ public static ExtractIconExA(lpszFile: LPCSTR, nIconIndex: INT, phiconLarge: LPVOID | NULL, phiconSmall: LPVOID | NULL, nIcons: UINT): UINT {
593
+ return Shell32.Load('ExtractIconExA')(lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons);
594
+ }
595
+
596
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extracticonexw
597
+ public static ExtractIconExW(lpszFile: LPCWSTR, nIconIndex: INT, phiconLarge: LPVOID | NULL, phiconSmall: LPVOID | NULL, nIcons: UINT): UINT {
598
+ return Shell32.Load('ExtractIconExW')(lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons);
599
+ }
600
+
601
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-extracticonw
602
+ public static ExtractIconW(hInst: HINSTANCE, pszExeFileName: LPCWSTR, nIconIndex: UINT): HICON {
603
+ return Shell32.Load('ExtractIconW')(hInst, pszExeFileName, nIconIndex);
604
+ }
605
+
606
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-findexecutablea
607
+ public static FindExecutableA(lpFile: LPCSTR, lpDirectory: LPCSTR | NULL, lpResult: LPSTR): HINSTANCE {
608
+ return Shell32.Load('FindExecutableA')(lpFile, lpDirectory, lpResult);
609
+ }
610
+
611
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-findexecutablew
612
+ public static FindExecutableW(lpFile: LPCWSTR, lpDirectory: LPCWSTR | NULL, lpResult: LPWSTR): HINSTANCE {
613
+ return Shell32.Load('FindExecutableW')(lpFile, lpDirectory, lpResult);
614
+ }
615
+
616
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-getcurrentprocessexplicitappusermodelid
617
+ public static GetCurrentProcessExplicitAppUserModelID(AppID: LPVOID): HRESULT {
618
+ return Shell32.Load('GetCurrentProcessExplicitAppUserModelID')(AppID);
619
+ }
620
+
621
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilappendid
622
+ public static ILAppendID(pidl: PIDLIST_RELATIVE | NULL, pmkid: LPCSHITEMID, fAppend: BOOL): PIDLIST_RELATIVE {
623
+ return Shell32.Load('ILAppendID')(pidl, pmkid, fAppend);
624
+ }
625
+
626
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilclone
627
+ public static ILClone(pidl: PCIDLIST_ABSOLUTE): PIDLIST_ABSOLUTE {
628
+ return Shell32.Load('ILClone')(pidl);
629
+ }
630
+
631
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilclonefirst
632
+ public static ILCloneFirst(pidl: PCIDLIST_ABSOLUTE): PUITEMID_CHILD {
633
+ return Shell32.Load('ILCloneFirst')(pidl);
634
+ }
635
+
636
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilcombine
637
+ public static ILCombine(pidl1: PCIDLIST_ABSOLUTE, pidl2: PCUIDLIST_RELATIVE): PIDLIST_ABSOLUTE {
638
+ return Shell32.Load('ILCombine')(pidl1, pidl2);
639
+ }
640
+
641
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilcreatefrompath
642
+ public static ILCreateFromPath(pszPath: LPCWSTR): PIDLIST_ABSOLUTE {
643
+ return Shell32.Load('ILCreateFromPath')(pszPath);
644
+ }
645
+
646
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilcreatefrompatha
647
+ public static ILCreateFromPathA(pszPath: LPCSTR): PIDLIST_ABSOLUTE {
648
+ return Shell32.Load('ILCreateFromPathA')(pszPath);
649
+ }
650
+
651
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilcreatefrompathw
652
+ public static ILCreateFromPathW(pszPath: LPCWSTR): PIDLIST_ABSOLUTE {
653
+ return Shell32.Load('ILCreateFromPathW')(pszPath);
654
+ }
655
+
656
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilfindchild
657
+ public static ILFindChild(pidlParent: PCIDLIST_ABSOLUTE, pidlChild: PCIDLIST_ABSOLUTE): PUIDLIST_RELATIVE {
658
+ return Shell32.Load('ILFindChild')(pidlParent, pidlChild);
659
+ }
660
+
661
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilfindlastid
662
+ public static ILFindLastID(pidl: PCIDLIST_ABSOLUTE): PUITEMID_CHILD {
663
+ return Shell32.Load('ILFindLastID')(pidl);
664
+ }
665
+
666
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilfree
667
+ public static ILFree(pidl: PIDLIST_RELATIVE | NULL): void {
668
+ return Shell32.Load('ILFree')(pidl);
669
+ }
670
+
671
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilgetnext
672
+ public static ILGetNext(pidl: PCUIDLIST_RELATIVE): PUIDLIST_RELATIVE {
673
+ return Shell32.Load('ILGetNext')(pidl);
674
+ }
675
+
676
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilgetsize
677
+ public static ILGetSize(pidl: PCIDLIST_ABSOLUTE): UINT {
678
+ return Shell32.Load('ILGetSize')(pidl);
679
+ }
680
+
681
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilisequal
682
+ public static ILIsEqual(pidl1: PCIDLIST_ABSOLUTE, pidl2: PCIDLIST_ABSOLUTE): BOOL {
683
+ return Shell32.Load('ILIsEqual')(pidl1, pidl2);
684
+ }
685
+
686
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilisparent
687
+ public static ILIsParent(pidl1: PCIDLIST_ABSOLUTE, pidl2: PCIDLIST_ABSOLUTE, fImmediate: BOOL): BOOL {
688
+ return Shell32.Load('ILIsParent')(pidl1, pidl2, fImmediate);
689
+ }
690
+
691
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-illoadfromstreamex
692
+ public static ILLoadFromStreamEx(pstm: LPVOID, ppidl: LPVOID): HRESULT {
693
+ return Shell32.Load('ILLoadFromStreamEx')(pstm, ppidl);
694
+ }
695
+
696
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilremovelastid
697
+ public static ILRemoveLastID(pidl: PUIDLIST_RELATIVE): BOOL {
698
+ return Shell32.Load('ILRemoveLastID')(pidl);
699
+ }
700
+
701
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-ilsavetostream
702
+ public static ILSaveToStream(pstm: LPVOID, pidl: PCIDLIST_ABSOLUTE): HRESULT {
703
+ return Shell32.Load('ILSaveToStream')(pstm, pidl);
704
+ }
705
+
706
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-initnetworkaddresscontrol
707
+ public static InitNetworkAddressControl(): BOOL {
708
+ return Shell32.Load('InitNetworkAddressControl')();
709
+ }
710
+
711
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-isuseranadmin
712
+ public static IsUserAnAdmin(): BOOL {
713
+ return Shell32.Load('IsUserAnAdmin')();
714
+ }
715
+
716
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-pathcleanupspec
717
+ public static PathCleanupSpec(pszDir: LPCWSTR | NULL, pszSpec: LPWSTR): INT {
718
+ return Shell32.Load('PathCleanupSpec')(pszDir, pszSpec);
719
+ }
720
+
721
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-pathisslowa
722
+ public static PathIsSlowA(pszFile: LPCSTR, dwAttr: DWORD): BOOL {
723
+ return Shell32.Load('PathIsSlowA')(pszFile, dwAttr);
724
+ }
725
+
726
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-pathissloww
727
+ public static PathIsSlowW(pszFile: LPCWSTR, dwAttr: DWORD): BOOL {
728
+ return Shell32.Load('PathIsSlowW')(pszFile, dwAttr);
729
+ }
730
+
731
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-pathmakeuniquename
732
+ public static PathMakeUniqueName(pszUniqueName: LPWSTR, cchMax: UINT, pszTemplate: LPCWSTR | NULL, pszLongPlate: LPCWSTR | NULL, pszDir: LPCWSTR): BOOL {
733
+ return Shell32.Load('PathMakeUniqueName')(pszUniqueName, cchMax, pszTemplate, pszLongPlate, pszDir);
734
+ }
735
+
736
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-pathresolve
737
+ public static PathResolve(pszPath: LPWSTR, dirs: LPVOID | NULL, fFlags: UINT): INT {
738
+ return Shell32.Load('PathResolve')(pszPath, dirs, fFlags);
739
+ }
740
+
741
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-pathyetanothermakeuniquename
742
+ public static PathYetAnotherMakeUniqueName(pszUniqueName: LPWSTR, pszPath: LPCWSTR, pszShort: LPCWSTR | NULL, pszFileSpec: LPCWSTR | NULL): BOOL {
743
+ return Shell32.Load('PathYetAnotherMakeUniqueName')(pszUniqueName, pszPath, pszShort, pszFileSpec);
744
+ }
745
+
746
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-pickicondlg
747
+ public static PickIconDlg(hwnd: HWND | 0n, pszIconPath: LPWSTR, cchIconPath: UINT, piIconIndex: LPVOID): INT {
748
+ return Shell32.Load('PickIconDlg')(hwnd, pszIconPath, cchIconPath, piIconIndex);
749
+ }
750
+
751
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-readcabinetstate
752
+ public static ReadCabinetState(pcs: PCABINETSTATE, cLength: INT): BOOL {
753
+ return Shell32.Load('ReadCabinetState')(pcs, cLength);
754
+ }
755
+
756
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-restartdialog
757
+ public static RestartDialog(hwnd: HWND | 0n, pszPrompt: LPCWSTR | NULL, dwReturn: DWORD): INT {
758
+ return Shell32.Load('RestartDialog')(hwnd, pszPrompt, dwReturn);
759
+ }
760
+
761
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-restartdialogex
762
+ public static RestartDialogEx(hwnd: HWND | 0n, pszPrompt: LPCWSTR | NULL, dwReturn: DWORD, dwReasonCode: DWORD): INT {
763
+ return Shell32.Load('RestartDialogEx')(hwnd, pszPrompt, dwReturn, dwReasonCode);
764
+ }
765
+
766
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl/nf-shobjidl-shadddefaultpropertiesbyext
767
+ public static SHAddDefaultPropertiesByExt(pszExt: LPCWSTR, pPropStore: LPVOID): HRESULT {
768
+ return Shell32.Load('SHAddDefaultPropertiesByExt')(pszExt, pPropStore);
769
+ }
770
+
771
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shaddfromPropSheetextarray
772
+ public static SHAddFromPropSheetExtArray(hpsxa: HPSXA, lpfnAddPage: LPFNADDPROPSHEETPAGE, lParam: LPARAM): UINT {
773
+ return Shell32.Load('SHAddFromPropSheetExtArray')(hpsxa, lpfnAddPage, lParam);
774
+ }
775
+
776
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shaddtorecentdocs
777
+ public static SHAddToRecentDocs(uFlags: UINT, pv: LPCVOID | NULL): void {
778
+ return Shell32.Load('SHAddToRecentDocs')(uFlags, pv);
779
+ }
780
+
781
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shalloc
782
+ public static SHAlloc(cb: SIZE_T): LPVOID {
783
+ return Shell32.Load('SHAlloc')(cb);
784
+ }
785
+
786
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shappbarmessage
787
+ public static SHAppBarMessage(dwMessage: DWORD, pData: PAPPBARDATA): UINT_PTR {
788
+ return Shell32.Load('SHAppBarMessage')(dwMessage, pData);
789
+ }
790
+
791
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shassocenumhandlers
792
+ public static SHAssocEnumHandlers(pszExtra: LPCWSTR, afFilter: ASSOC_FILTER, ppEnumHandler: LPVOID): HRESULT {
793
+ return Shell32.Load('SHAssocEnumHandlers')(pszExtra, afFilter, ppEnumHandler);
794
+ }
795
+
796
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shassocenumhandlersforprotocolbyapplication
797
+ public static SHAssocEnumHandlersForProtocolByApplication(pszProtocol: LPCWSTR, riid: LPVOID, enumHandlers: LPVOID): HRESULT {
798
+ return Shell32.Load('SHAssocEnumHandlersForProtocolByApplication')(pszProtocol, riid, enumHandlers);
799
+ }
800
+
801
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shbindtofolderidlistparent
802
+ public static SHBindToFolderIDListParent(psfRoot: LPVOID | NULL, pidl: PCUIDLIST_RELATIVE, riid: LPVOID, ppv: LPVOID, ppidlLast: LPVOID | NULL): HRESULT {
803
+ return Shell32.Load('SHBindToFolderIDListParent')(psfRoot, pidl, riid, ppv, ppidlLast);
804
+ }
805
+
806
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shbindtofolderidlistparentex
807
+ public static SHBindToFolderIDListParentEx(psfRoot: LPVOID | NULL, pidl: PCUIDLIST_RELATIVE, ppbc: LPVOID | NULL, riid: LPVOID, ppv: LPVOID, ppidlLast: LPVOID | NULL): HRESULT {
808
+ return Shell32.Load('SHBindToFolderIDListParentEx')(psfRoot, pidl, ppbc, riid, ppv, ppidlLast);
809
+ }
810
+
811
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shbindtoobject
812
+ public static SHBindToObject(psf: LPVOID, pidl: PCUIDLIST_RELATIVE, pbc: LPVOID | NULL, riid: LPVOID, ppv: LPVOID): HRESULT {
813
+ return Shell32.Load('SHBindToObject')(psf, pidl, pbc, riid, ppv);
814
+ }
815
+
816
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shbindtoparent
817
+ public static SHBindToParent(pidl: PCIDLIST_ABSOLUTE, riid: LPVOID, ppv: LPVOID, ppidlLast: LPVOID | NULL): HRESULT {
818
+ return Shell32.Load('SHBindToParent')(pidl, riid, ppv, ppidlLast);
819
+ }
820
+
821
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shbrowseforfoldera
822
+ public static SHBrowseForFolder(lpbi: LPBROWSEINFOA): PIDLIST_ABSOLUTE {
823
+ return Shell32.Load('SHBrowseForFolder')(lpbi);
824
+ }
825
+
826
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shbrowseforfoldera
827
+ public static SHBrowseForFolderA(lpbi: LPBROWSEINFOA): PIDLIST_ABSOLUTE {
828
+ return Shell32.Load('SHBrowseForFolderA')(lpbi);
829
+ }
830
+
831
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shbrowseforfolderw
832
+ public static SHBrowseForFolderW(lpbi: LPBROWSEINFOW): PIDLIST_ABSOLUTE {
833
+ return Shell32.Load('SHBrowseForFolderW')(lpbi);
834
+ }
835
+
836
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shchangenotification_lock
837
+ public static SHChangeNotification_Lock(hChange: HANDLE, dwProcId: DWORD, pppidl: LPVOID, plEvent: LPVOID): HANDLE {
838
+ return Shell32.Load('SHChangeNotification_Lock')(hChange, dwProcId, pppidl, plEvent);
839
+ }
840
+
841
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shchangenotification_unlock
842
+ public static SHChangeNotification_Unlock(hLock: HANDLE): BOOL {
843
+ return Shell32.Load('SHChangeNotification_Unlock')(hLock);
844
+ }
845
+
846
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shchangenotify
847
+ public static SHChangeNotify(wEventId: LONG, uFlags: UINT, dwItem1: LPCVOID | NULL, dwItem2: LPCVOID | NULL): void {
848
+ return Shell32.Load('SHChangeNotify')(wEventId, uFlags, dwItem1, dwItem2);
849
+ }
850
+
851
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shchangenotifyderegister
852
+ public static SHChangeNotifyDeregister(ulID: ULONG): BOOL {
853
+ return Shell32.Load('SHChangeNotifyDeregister')(ulID);
854
+ }
855
+
856
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shchangenotifyregister
857
+ public static SHChangeNotifyRegister(hwnd: HWND, fSources: INT, fEvents: LONG, wMsg: UINT, cEntries: INT, pshcne: PSHCHANGENOTIFYENTRY): ULONG {
858
+ return Shell32.Load('SHChangeNotifyRegister')(hwnd, fSources, fEvents, wMsg, cEntries, pshcne);
859
+ }
860
+
861
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateassociationregistration
862
+ public static SHCreateAssociationRegistration(riid: LPVOID, ppv: LPVOID): HRESULT {
863
+ return Shell32.Load('SHCreateAssociationRegistration')(riid, ppv);
864
+ }
865
+
866
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatedataobject
867
+ public static SHCreateDataObject(pidlFolder: PCIDLIST_ABSOLUTE | NULL, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY | NULL, pdtInner: LPVOID | NULL, riid: LPVOID, ppv: LPVOID): HRESULT {
868
+ return Shell32.Load('SHCreateDataObject')(pidlFolder, cidl, apidl, pdtInner, riid, ppv);
869
+ }
870
+
871
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatedefaultcontextmenu
872
+ public static SHCreateDefaultContextMenu(pdcm: PCDEFCONTEXTMENU, riid: LPVOID, ppv: LPVOID): HRESULT {
873
+ return Shell32.Load('SHCreateDefaultContextMenu')(pdcm, riid, ppv);
874
+ }
875
+
876
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreatedefaultextracticon
877
+ public static SHCreateDefaultExtractIcon(riid: LPVOID, ppv: LPVOID): HRESULT {
878
+ return Shell32.Load('SHCreateDefaultExtractIcon')(riid, ppv);
879
+ }
880
+
881
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl/nf-shobjidl-shcreatedefaultpropertiesop
882
+ public static SHCreateDefaultPropertiesOp(psi: LPVOID, ppFileOp: LPVOID): HRESULT {
883
+ return Shell32.Load('SHCreateDefaultPropertiesOp')(psi, ppFileOp);
884
+ }
885
+
886
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatedirectory
887
+ public static SHCreateDirectory(hwnd: HWND | 0n, pszPath: LPCWSTR): INT {
888
+ return Shell32.Load('SHCreateDirectory')(hwnd, pszPath);
889
+ }
890
+
891
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatedirectoryexa
892
+ public static SHCreateDirectoryExA(hwnd: HWND | 0n, pszPath: LPCSTR, psa: LPSECURITY_ATTRIBUTES | NULL): INT {
893
+ return Shell32.Load('SHCreateDirectoryExA')(hwnd, pszPath, psa);
894
+ }
895
+
896
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatedirectoryexw
897
+ public static SHCreateDirectoryExW(hwnd: HWND | 0n, pszPath: LPCWSTR, psa: LPSECURITY_ATTRIBUTES | NULL): INT {
898
+ return Shell32.Load('SHCreateDirectoryExW')(hwnd, pszPath, psa);
899
+ }
900
+
901
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatefileextracticonw
902
+ public static SHCreateFileExtractIconW(pszFile: LPCWSTR, dwFileAttributes: DWORD, riid: LPVOID, ppv: LPVOID): HRESULT {
903
+ return Shell32.Load('SHCreateFileExtractIconW')(pszFile, dwFileAttributes, riid, ppv);
904
+ }
905
+
906
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateitemfromidlist
907
+ public static SHCreateItemFromIDList(pidl: PCIDLIST_ABSOLUTE, riid: LPVOID, ppv: LPVOID): HRESULT {
908
+ return Shell32.Load('SHCreateItemFromIDList')(pidl, riid, ppv);
909
+ }
910
+
911
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateitemfromparsingname
912
+ public static SHCreateItemFromParsingName(pszPath: LPCWSTR, pbc: LPVOID | NULL, riid: LPVOID, ppv: LPVOID): HRESULT {
913
+ return Shell32.Load('SHCreateItemFromParsingName')(pszPath, pbc, riid, ppv);
914
+ }
915
+
916
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateitemfromrelativename
917
+ public static SHCreateItemFromRelativeName(psiParent: LPVOID, pszName: LPCWSTR, pbc: LPVOID | NULL, riid: LPVOID, ppv: LPVOID): HRESULT {
918
+ return Shell32.Load('SHCreateItemFromRelativeName')(psiParent, pszName, pbc, riid, ppv);
919
+ }
920
+
921
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateiteminknownfolder
922
+ public static SHCreateItemInKnownFolder(kfid: LPVOID, dwKFFlags: DWORD, pszItem: LPCWSTR | NULL, riid: LPVOID, ppv: LPVOID): HRESULT {
923
+ return Shell32.Load('SHCreateItemInKnownFolder')(kfid, dwKFFlags, pszItem, riid, ppv);
924
+ }
925
+
926
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateitemwithparent
927
+ public static SHCreateItemWithParent(pidlParent: PCIDLIST_ABSOLUTE | NULL, psfParent: LPVOID | NULL, pidl: PCUITEMID_CHILD, riid: LPVOID, ppv: LPVOID): HRESULT {
928
+ return Shell32.Load('SHCreateItemWithParent')(pidlParent, psfParent, pidl, riid, ppv);
929
+ }
930
+
931
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shcreateprocessasuserw
932
+ public static SHCreateProcessAsUserW(pscpi: LPSHCREATEPROCESSINFOW): BOOL {
933
+ return Shell32.Load('SHCreateProcessAsUserW')(pscpi);
934
+ }
935
+
936
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shcreatepropsheetextarray
937
+ public static SHCreatePropSheetExtArray(hKey: HKEY, pszSubKey: LPCWSTR | NULL, max_iface: UINT): HPSXA {
938
+ return Shell32.Load('SHCreatePropSheetExtArray')(hKey, pszSubKey, max_iface);
939
+ }
940
+
941
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreatequerycancelautoplaymoniker
942
+ public static SHCreateQueryCancelAutoPlayMoniker(ppmoniker: LPVOID): HRESULT {
943
+ return Shell32.Load('SHCreateQueryCancelAutoPlayMoniker')(ppmoniker);
944
+ }
945
+
946
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreateshellfolderview
947
+ public static SHCreateShellFolderView(pcsfv: PSFV_CREATE, ppsv: LPVOID): HRESULT {
948
+ return Shell32.Load('SHCreateShellFolderView')(pcsfv, ppsv);
949
+ }
950
+
951
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreateshellfolderviewex
952
+ public static SHCreateShellFolderViewEx(pcsfv: LPVOID, ppsv: LPVOID): HRESULT {
953
+ return Shell32.Load('SHCreateShellFolderViewEx')(pcsfv, ppsv);
954
+ }
955
+
956
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreateshellitem
957
+ public static SHCreateShellItem(pidlParent: PCIDLIST_ABSOLUTE | NULL, psfParent: LPVOID | NULL, pidl: PCUITEMID_CHILD, ppsi: LPVOID): HRESULT {
958
+ return Shell32.Load('SHCreateShellItem')(pidlParent, psfParent, pidl, ppsi);
959
+ }
960
+
961
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateshellitemarray
962
+ public static SHCreateShellItemArray(pidlParent: PCIDLIST_ABSOLUTE | NULL, psf: LPVOID | NULL, cidl: UINT, ppidl: PCUITEMID_CHILD_ARRAY, ppsiItemArray: LPVOID): HRESULT {
963
+ return Shell32.Load('SHCreateShellItemArray')(pidlParent, psf, cidl, ppidl, ppsiItemArray);
964
+ }
965
+
966
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateshellitemarrayfromdataobject
967
+ public static SHCreateShellItemArrayFromDataObject(pdo: LPVOID, riid: LPVOID, ppv: LPVOID): HRESULT {
968
+ return Shell32.Load('SHCreateShellItemArrayFromDataObject')(pdo, riid, ppv);
969
+ }
970
+
971
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateshellitemarrayfromidlists
972
+ public static SHCreateShellItemArrayFromIDLists(cidl: UINT, rgpidl: LPVOID, ppsiItemArray: LPVOID): HRESULT {
973
+ return Shell32.Load('SHCreateShellItemArrayFromIDLists')(cidl, rgpidl, ppsiItemArray);
974
+ }
975
+
976
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateshellitemarrayfromshellitem
977
+ public static SHCreateShellItemArrayFromShellItem(psi: LPVOID, riid: LPVOID, ppv: LPVOID): HRESULT {
978
+ return Shell32.Load('SHCreateShellItemArrayFromShellItem')(psi, riid, ppv);
979
+ }
980
+
981
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatestdenumfmtetc
982
+ public static SHCreateStdEnumFmtEtc(cfmt: UINT, afmt: LPVOID, ppenumFormatEtc: LPVOID): HRESULT {
983
+ return Shell32.Load('SHCreateStdEnumFmtEtc')(cfmt, afmt, ppenumFormatEtc);
984
+ }
985
+
986
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shdefextracticona
987
+ public static SHDefExtractIconA(pszIconFile: LPCSTR, iIndex: INT, uFlags: UINT, phiconLarge: LPVOID | NULL, phiconSmall: LPVOID | NULL, nIconSize: UINT): HRESULT {
988
+ return Shell32.Load('SHDefExtractIconA')(pszIconFile, iIndex, uFlags, phiconLarge, phiconSmall, nIconSize);
989
+ }
990
+
991
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shdefextracticonw
992
+ public static SHDefExtractIconW(pszIconFile: LPCWSTR, iIndex: INT, uFlags: UINT, phiconLarge: LPVOID | NULL, phiconSmall: LPVOID | NULL, nIconSize: UINT): HRESULT {
993
+ return Shell32.Load('SHDefExtractIconW')(pszIconFile, iIndex, uFlags, phiconLarge, phiconSmall, nIconSize);
994
+ }
995
+
996
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shdestroypropsheetextarray
997
+ public static SHDestroyPropSheetExtArray(hpsxa: HPSXA): void {
998
+ return Shell32.Load('SHDestroyPropSheetExtArray')(hpsxa);
999
+ }
1000
+
1001
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shdodragdrop
1002
+ public static SHDoDragDrop(hwnd: HWND, pdata: LPVOID, pdsrc: LPVOID | NULL, dwEffect: DWORD, pdwEffect: LPDWORD): HRESULT {
1003
+ return Shell32.Load('SHDoDragDrop')(hwnd, pdata, pdsrc, dwEffect, pdwEffect);
1004
+ }
1005
+
1006
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shemptyrecyclebina
1007
+ public static SHEmptyRecycleBinA(hwnd: HWND | 0n, pszRootPath: LPCSTR | NULL, dwFlags: DWORD): HRESULT {
1008
+ return Shell32.Load('SHEmptyRecycleBinA')(hwnd, pszRootPath, dwFlags);
1009
+ }
1010
+
1011
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shemptyrecyclebinw
1012
+ public static SHEmptyRecycleBinW(hwnd: HWND | 0n, pszRootPath: LPCWSTR | NULL, dwFlags: DWORD): HRESULT {
1013
+ return Shell32.Load('SHEmptyRecycleBinW')(hwnd, pszRootPath, dwFlags);
1014
+ }
1015
+
1016
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shenumerateunreadmailaccountsw
1017
+ public static SHEnumerateUnreadMailAccountsW(hKeyUser: HKEY | 0n, dwIndex: DWORD, pszMailAddress: LPWSTR, cchMailAddress: INT): HRESULT {
1018
+ return Shell32.Load('SHEnumerateUnreadMailAccountsW')(hKeyUser, dwIndex, pszMailAddress, cchMailAddress);
1019
+ }
1020
+
1021
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shevaluatesystemcommandtemplate
1022
+ public static SHEvaluateSystemCommandTemplate(pszCmdTemplate: LPCWSTR, ppszApplication: LPVOID, ppszCommandLine: LPVOID, ppszParameters: LPVOID): HRESULT {
1023
+ return Shell32.Load('SHEvaluateSystemCommandTemplate')(pszCmdTemplate, ppszApplication, ppszCommandLine, ppszParameters);
1024
+ }
1025
+
1026
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shextracticonsw
1027
+ public static SHExtractIconsW(pszFileName: LPCWSTR, nIconIndex: INT, cxIcon: INT, cyIcon: INT, phicon: LPVOID, piconid: LPVOID | NULL, nIcons: UINT, flags: UINT): UINT {
1028
+ return Shell32.Load('SHExtractIconsW')(pszFileName, nIconIndex, cxIcon, cyIcon, phicon, piconid, nIcons, flags);
1029
+ }
1030
+
1031
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfileoperationa
1032
+ public static SHFileOperation(lpFileOp: LPSHFILEOPSTRUCTA): INT {
1033
+ return Shell32.Load('SHFileOperation')(lpFileOp);
1034
+ }
1035
+
1036
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfileoperationa
1037
+ public static SHFileOperationA(lpFileOp: LPSHFILEOPSTRUCTA): INT {
1038
+ return Shell32.Load('SHFileOperationA')(lpFileOp);
1039
+ }
1040
+
1041
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfileoperationw
1042
+ public static SHFileOperationW(lpFileOp: LPSHFILEOPSTRUCTW): INT {
1043
+ return Shell32.Load('SHFileOperationW')(lpFileOp);
1044
+ }
1045
+
1046
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shformatdrive
1047
+ public static SHFormatDrive(hwnd: HWND, drive: UINT, fmtID: UINT, options: UINT): DWORD {
1048
+ return Shell32.Load('SHFormatDrive')(hwnd, drive, fmtID, options);
1049
+ }
1050
+
1051
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shfree
1052
+ public static SHFree(pv: LPVOID | NULL): void {
1053
+ return Shell32.Load('SHFree')(pv);
1054
+ }
1055
+
1056
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfreenamemappings
1057
+ public static SHFreeNameMappings(hNameMappings: HANDLE): void {
1058
+ return Shell32.Load('SHFreeNameMappings')(hNameMappings);
1059
+ }
1060
+
1061
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetattributesfromdataobject
1062
+ public static SHGetAttributesFromDataObject(pdo: LPVOID, dwAttributeMask: DWORD, pdwAttributes: LPDWORD, pcItems: LPVOID): HRESULT {
1063
+ return Shell32.Load('SHGetAttributesFromDataObject')(pdo, dwAttributeMask, pdwAttributes, pcItems);
1064
+ }
1065
+
1066
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetdatafromidlista
1067
+ public static SHGetDataFromIDListA(psf: LPVOID, pidl: PCUITEMID_CHILD, nFormat: INT, pv: LPVOID, cb: INT): HRESULT {
1068
+ return Shell32.Load('SHGetDataFromIDListA')(psf, pidl, nFormat, pv, cb);
1069
+ }
1070
+
1071
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetdatafromidlistw
1072
+ public static SHGetDataFromIDListW(psf: LPVOID, pidl: PCUITEMID_CHILD, nFormat: INT, pv: LPVOID, cb: INT): HRESULT {
1073
+ return Shell32.Load('SHGetDataFromIDListW')(psf, pidl, nFormat, pv, cb);
1074
+ }
1075
+
1076
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetdesktopfolder
1077
+ public static SHGetDesktopFolder(ppshf: LPVOID): HRESULT {
1078
+ return Shell32.Load('SHGetDesktopFolder')(ppshf);
1079
+ }
1080
+
1081
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetdiskfreespaceexa
1082
+ public static SHGetDiskFreeSpaceA(pszDirectoryName: LPCSTR, pFreeBytesAvailableToCaller: LPVOID | NULL, pTotalNumberOfBytes: LPVOID | NULL, pTotalNumberOfFreeBytes: LPVOID | NULL): BOOL {
1083
+ return Shell32.Load('SHGetDiskFreeSpaceA')(pszDirectoryName, pFreeBytesAvailableToCaller, pTotalNumberOfBytes, pTotalNumberOfFreeBytes);
1084
+ }
1085
+
1086
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetdiskfreespaceexa
1087
+ public static SHGetDiskFreeSpaceExA(pszDirectoryName: LPCSTR, pFreeBytesAvailableToCaller: LPVOID | NULL, pTotalNumberOfBytes: LPVOID | NULL, pTotalNumberOfFreeBytes: LPVOID | NULL): BOOL {
1088
+ return Shell32.Load('SHGetDiskFreeSpaceExA')(pszDirectoryName, pFreeBytesAvailableToCaller, pTotalNumberOfBytes, pTotalNumberOfFreeBytes);
1089
+ }
1090
+
1091
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetdiskfreespaceexw
1092
+ public static SHGetDiskFreeSpaceExW(pszDirectoryName: LPCWSTR, pFreeBytesAvailableToCaller: LPVOID | NULL, pTotalNumberOfBytes: LPVOID | NULL, pTotalNumberOfFreeBytes: LPVOID | NULL): BOOL {
1093
+ return Shell32.Load('SHGetDiskFreeSpaceExW')(pszDirectoryName, pFreeBytesAvailableToCaller, pTotalNumberOfBytes, pTotalNumberOfFreeBytes);
1094
+ }
1095
+
1096
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetdrivemedia
1097
+ public static SHGetDriveMedia(pszDrive: LPCWSTR, pdwMediaContent: LPDWORD): HRESULT {
1098
+ return Shell32.Load('SHGetDriveMedia')(pszDrive, pdwMediaContent);
1099
+ }
1100
+
1101
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetfileinfoa
1102
+ public static SHGetFileInfo(pszPath: LPCSTR, dwFileAttributes: DWORD, psfi: LPSHFILEINFOA, cbFileInfo: UINT, uFlags: UINT): DWORD_PTR {
1103
+ return Shell32.Load('SHGetFileInfo')(pszPath, dwFileAttributes, psfi, cbFileInfo, uFlags);
1104
+ }
1105
+
1106
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetfileinfoa
1107
+ public static SHGetFileInfoA(pszPath: LPCSTR, dwFileAttributes: DWORD, psfi: LPSHFILEINFOA, cbFileInfo: UINT, uFlags: UINT): DWORD_PTR {
1108
+ return Shell32.Load('SHGetFileInfoA')(pszPath, dwFileAttributes, psfi, cbFileInfo, uFlags);
1109
+ }
1110
+
1111
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetfileinfow
1112
+ public static SHGetFileInfoW(pszPath: LPCWSTR, dwFileAttributes: DWORD, psfi: LPSHFILEINFOW, cbFileInfo: UINT, uFlags: UINT): DWORD_PTR {
1113
+ return Shell32.Load('SHGetFileInfoW')(pszPath, dwFileAttributes, psfi, cbFileInfo, uFlags);
1114
+ }
1115
+
1116
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderlocation
1117
+ public static SHGetFolderLocation(hwnd: HWND | 0n, csidl: INT, hToken: HANDLE | 0n, dwFlags: DWORD, ppidl: LPVOID): HRESULT {
1118
+ return Shell32.Load('SHGetFolderLocation')(hwnd, csidl, hToken, dwFlags, ppidl);
1119
+ }
1120
+
1121
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpatha
1122
+ public static SHGetFolderPathA(hwnd: HWND | 0n, csidl: INT, hToken: HANDLE | 0n, dwFlags: DWORD, pszPath: LPSTR): HRESULT {
1123
+ return Shell32.Load('SHGetFolderPathA')(hwnd, csidl, hToken, dwFlags, pszPath);
1124
+ }
1125
+
1126
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpathandsubdira
1127
+ public static SHGetFolderPathAndSubDirA(hwnd: HWND | 0n, csidl: INT, hToken: HANDLE | 0n, dwFlags: DWORD, pszSubDir: LPCSTR, pszPath: LPSTR): HRESULT {
1128
+ return Shell32.Load('SHGetFolderPathAndSubDirA')(hwnd, csidl, hToken, dwFlags, pszSubDir, pszPath);
1129
+ }
1130
+
1131
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpathandsubdirw
1132
+ public static SHGetFolderPathAndSubDirW(hwnd: HWND | 0n, csidl: INT, hToken: HANDLE | 0n, dwFlags: DWORD, pszSubDir: LPCWSTR, pszPath: LPWSTR): HRESULT {
1133
+ return Shell32.Load('SHGetFolderPathAndSubDirW')(hwnd, csidl, hToken, dwFlags, pszSubDir, pszPath);
1134
+ }
1135
+
1136
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpathex
1137
+ public static SHGetFolderPathEx(rfid: LPVOID, dwFlags: DWORD, hToken: HANDLE | 0n, pszPath: LPWSTR, cchPath: UINT): HRESULT {
1138
+ return Shell32.Load('SHGetFolderPathEx')(rfid, dwFlags, hToken, pszPath, cchPath);
1139
+ }
1140
+
1141
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpathw
1142
+ public static SHGetFolderPathW(hwnd: HWND | 0n, csidl: INT, hToken: HANDLE | 0n, dwFlags: DWORD, pszPath: LPWSTR): HRESULT {
1143
+ return Shell32.Load('SHGetFolderPathW')(hwnd, csidl, hToken, dwFlags, pszPath);
1144
+ }
1145
+
1146
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shgetidlistfromobject
1147
+ public static SHGetIDListFromObject(punk: LPVOID, ppidl: LPVOID): HRESULT {
1148
+ return Shell32.Load('SHGetIDListFromObject')(punk, ppidl);
1149
+ }
1150
+
1151
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgeticonoverlayindexa
1152
+ public static SHGetIconOverlayIndexA(pszIconPath: LPCSTR | NULL, iIconIndex: INT): INT {
1153
+ return Shell32.Load('SHGetIconOverlayIndexA')(pszIconPath, iIconIndex);
1154
+ }
1155
+
1156
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgeticonoverlayindexw
1157
+ public static SHGetIconOverlayIndexW(pszIconPath: LPCWSTR | NULL, iIconIndex: INT): INT {
1158
+ return Shell32.Load('SHGetIconOverlayIndexW')(pszIconPath, iIconIndex);
1159
+ }
1160
+
1161
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetimagelist
1162
+ public static SHGetImageList(iImageList: INT, riid: LPVOID, ppvObj: LPVOID): HRESULT {
1163
+ return Shell32.Load('SHGetImageList')(iImageList, riid, ppvObj);
1164
+ }
1165
+
1166
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetinstanceexplorer
1167
+ public static SHGetInstanceExplorer(ppunk: LPVOID): HRESULT {
1168
+ return Shell32.Load('SHGetInstanceExplorer')(ppunk);
1169
+ }
1170
+
1171
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shgetitemfromdataobject
1172
+ public static SHGetItemFromDataObject(pdtobj: LPVOID, dwFlags: DWORD, riid: LPVOID, ppv: LPVOID): HRESULT {
1173
+ return Shell32.Load('SHGetItemFromDataObject')(pdtobj, dwFlags, riid, ppv);
1174
+ }
1175
+
1176
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shgetitemfromobject
1177
+ public static SHGetItemFromObject(punk: LPVOID, riid: LPVOID, ppv: LPVOID): HRESULT {
1178
+ return Shell32.Load('SHGetItemFromObject')(punk, riid, ppv);
1179
+ }
1180
+
1181
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderidlist
1182
+ public static SHGetKnownFolderIDList(rfid: LPVOID, dwFlags: DWORD, hToken: HANDLE | 0n, ppidl: LPVOID): HRESULT {
1183
+ return Shell32.Load('SHGetKnownFolderIDList')(rfid, dwFlags, hToken, ppidl);
1184
+ }
1185
+
1186
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderitem
1187
+ public static SHGetKnownFolderItem(rfid: LPVOID, flags: DWORD, hToken: HANDLE | 0n, riid: LPVOID, ppv: LPVOID): HRESULT {
1188
+ return Shell32.Load('SHGetKnownFolderItem')(rfid, flags, hToken, riid, ppv);
1189
+ }
1190
+
1191
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath
1192
+ public static SHGetKnownFolderPath(rfid: LPVOID, dwFlags: DWORD, hToken: HANDLE | 0n, ppszPath: LPVOID): HRESULT {
1193
+ return Shell32.Load('SHGetKnownFolderPath')(rfid, dwFlags, hToken, ppszPath);
1194
+ }
1195
+
1196
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetlocalizedname
1197
+ public static SHGetLocalizedName(pszPath: LPCWSTR, pszResModule: LPWSTR, cch: UINT, pidsRes: LPVOID): HRESULT {
1198
+ return Shell32.Load('SHGetLocalizedName')(pszPath, pszResModule, cch, pidsRes);
1199
+ }
1200
+
1201
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetmalloc
1202
+ public static SHGetMalloc(ppMalloc: LPVOID): HRESULT {
1203
+ return Shell32.Load('SHGetMalloc')(ppMalloc);
1204
+ }
1205
+
1206
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shgetnamefromidlist
1207
+ public static SHGetNameFromIDList(pidl: PCIDLIST_ABSOLUTE, sigdnName: SIGDN, ppszName: LPVOID): HRESULT {
1208
+ return Shell32.Load('SHGetNameFromIDList')(pidl, sigdnName, ppszName);
1209
+ }
1210
+
1211
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetnewlinkinfoa
1212
+ public static SHGetNewLinkInfo(pszLinkTo: LPCSTR, pszDir: LPCSTR, pszName: LPSTR, pfMustCopy: LPVOID, uFlags: UINT): BOOL {
1213
+ return Shell32.Load('SHGetNewLinkInfo')(pszLinkTo, pszDir, pszName, pfMustCopy, uFlags);
1214
+ }
1215
+
1216
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetnewlinkinfoa
1217
+ public static SHGetNewLinkInfoA(pszLinkTo: LPCSTR, pszDir: LPCSTR, pszName: LPSTR, pfMustCopy: LPVOID, uFlags: UINT): BOOL {
1218
+ return Shell32.Load('SHGetNewLinkInfoA')(pszLinkTo, pszDir, pszName, pfMustCopy, uFlags);
1219
+ }
1220
+
1221
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetnewlinkinfow
1222
+ public static SHGetNewLinkInfoW(pszLinkTo: LPCWSTR, pszDir: LPCWSTR, pszName: LPWSTR, pfMustCopy: LPVOID, uFlags: UINT): BOOL {
1223
+ return Shell32.Load('SHGetNewLinkInfoW')(pszLinkTo, pszDir, pszName, pfMustCopy, uFlags);
1224
+ }
1225
+
1226
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetpathfromidlista
1227
+ public static SHGetPathFromIDList(pidl: PCIDLIST_ABSOLUTE, pszPath: LPSTR): BOOL {
1228
+ return Shell32.Load('SHGetPathFromIDList')(pidl, pszPath);
1229
+ }
1230
+
1231
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetpathfromidlista
1232
+ public static SHGetPathFromIDListA(pidl: PCIDLIST_ABSOLUTE, pszPath: LPSTR): BOOL {
1233
+ return Shell32.Load('SHGetPathFromIDListA')(pidl, pszPath);
1234
+ }
1235
+
1236
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetpathfromidlistex
1237
+ public static SHGetPathFromIDListEx(pidl: PCIDLIST_ABSOLUTE, pszPath: LPWSTR, cchPath: DWORD, uOpts: DWORD): BOOL {
1238
+ return Shell32.Load('SHGetPathFromIDListEx')(pidl, pszPath, cchPath, uOpts);
1239
+ }
1240
+
1241
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetpathfromidlistw
1242
+ public static SHGetPathFromIDListW(pidl: PCIDLIST_ABSOLUTE, pszPath: LPWSTR): BOOL {
1243
+ return Shell32.Load('SHGetPathFromIDListW')(pidl, pszPath);
1244
+ }
1245
+
1246
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shgetpropertystoreforwindow
1247
+ public static SHGetPropertyStoreForWindow(hwnd: HWND, riid: LPVOID, ppv: LPVOID): HRESULT {
1248
+ return Shell32.Load('SHGetPropertyStoreForWindow')(hwnd, riid, ppv);
1249
+ }
1250
+
1251
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shgetpropertystorefromidlist
1252
+ public static SHGetPropertyStoreFromIDList(pidl: PCIDLIST_ABSOLUTE, flags: GETPROPERTYSTOREFLAGS, riid: LPVOID, ppv: LPVOID): HRESULT {
1253
+ return Shell32.Load('SHGetPropertyStoreFromIDList')(pidl, flags, riid, ppv);
1254
+ }
1255
+
1256
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shgetpropertystorefromparsingname
1257
+ public static SHGetPropertyStoreFromParsingName(pszPath: LPCWSTR, pbc: LPVOID | NULL, flags: GETPROPERTYSTOREFLAGS, riid: LPVOID, ppv: LPVOID): HRESULT {
1258
+ return Shell32.Load('SHGetPropertyStoreFromParsingName')(pszPath, pbc, flags, riid, ppv);
1259
+ }
1260
+
1261
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetrealidl
1262
+ public static SHGetRealIDL(psf: LPVOID, pidlSimple: PCUITEMID_CHILD, ppidlReal: LPVOID): HRESULT {
1263
+ return Shell32.Load('SHGetRealIDL')(psf, pidlSimple, ppidlReal);
1264
+ }
1265
+
1266
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shgetsetfoldercustomsettings
1267
+ public static SHGetSetFolderCustomSettings(pfcs: LPSHFOLDERCUSTOMSETTINGS, pszPath: LPCWSTR, dwReadWrite: DWORD): HRESULT {
1268
+ return Shell32.Load('SHGetSetFolderCustomSettings')(pfcs, pszPath, dwReadWrite);
1269
+ }
1270
+
1271
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetsetsettings
1272
+ public static SHGetSetSettings(lpss: LPSHELLSTATE, dwMask: DWORD, bSet: BOOL): void {
1273
+ return Shell32.Load('SHGetSetSettings')(lpss, dwMask, bSet);
1274
+ }
1275
+
1276
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetsettings
1277
+ public static SHGetSettings(lpsfs: LPSHELLFLAGSTATE, dwMask: DWORD): void {
1278
+ return Shell32.Load('SHGetSettings')(lpsfs, dwMask);
1279
+ }
1280
+
1281
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetspecialfolderlocation
1282
+ public static SHGetSpecialFolderLocation(hwnd: HWND | 0n, csidl: INT, ppidl: LPVOID): HRESULT {
1283
+ return Shell32.Load('SHGetSpecialFolderLocation')(hwnd, csidl, ppidl);
1284
+ }
1285
+
1286
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetspecialfolderpatha
1287
+ public static SHGetSpecialFolderPathA(hwnd: HWND | 0n, pszPath: LPSTR, csidl: INT, fCreate: BOOL): BOOL {
1288
+ return Shell32.Load('SHGetSpecialFolderPathA')(hwnd, pszPath, csidl, fCreate);
1289
+ }
1290
+
1291
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetspecialfolderpathw
1292
+ public static SHGetSpecialFolderPathW(hwnd: HWND | 0n, pszPath: LPWSTR, csidl: INT, fCreate: BOOL): BOOL {
1293
+ return Shell32.Load('SHGetSpecialFolderPathW')(hwnd, pszPath, csidl, fCreate);
1294
+ }
1295
+
1296
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetstockiconinfo
1297
+ public static SHGetStockIconInfo(siid: UINT, uFlags: UINT, psii: LPSHSTOCKICONINFO): HRESULT {
1298
+ return Shell32.Load('SHGetStockIconInfo')(siid, uFlags, psii);
1299
+ }
1300
+
1301
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shgettemporarypropertyforitem
1302
+ public static SHGetTemporaryPropertyForItem(psi: LPVOID, propkey: LPVOID, ppropvar: LPVOID): HRESULT {
1303
+ return Shell32.Load('SHGetTemporaryPropertyForItem')(psi, propkey, ppropvar);
1304
+ }
1305
+
1306
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetunreadmailcountw
1307
+ public static SHGetUnreadMailCountW(hKeyUser: HKEY | 0n, pszMailAddress: LPCWSTR | NULL, pdwCount: LPDWORD | NULL, pFileTime: LPVOID | NULL, pszShellExecuteCommand: LPWSTR | NULL, cchShellExecuteCommand: INT): HRESULT {
1308
+ return Shell32.Load('SHGetUnreadMailCountW')(hKeyUser, pszMailAddress, pdwCount, pFileTime, pszShellExecuteCommand, cchShellExecuteCommand);
1309
+ }
1310
+
1311
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shhandleupdateimage
1312
+ public static SHHandleUpdateImage(pidlExtra: PCIDLIST_ABSOLUTE): INT {
1313
+ return Shell32.Load('SHHandleUpdateImage')(pidlExtra);
1314
+ }
1315
+
1316
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shilcreatefrompath
1317
+ public static SHILCreateFromPath(pszPath: LPCWSTR, ppidl: LPVOID, rgfInOut: LPDWORD | NULL): HRESULT {
1318
+ return Shell32.Load('SHILCreateFromPath')(pszPath, ppidl, rgfInOut);
1319
+ }
1320
+
1321
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shinvokeprintercommanda
1322
+ public static SHInvokePrinterCommandA(hwnd: HWND | 0n, uAction: UINT, lpBuf1: LPCSTR, lpBuf2: LPCSTR | NULL, fModal: BOOL): BOOL {
1323
+ return Shell32.Load('SHInvokePrinterCommandA')(hwnd, uAction, lpBuf1, lpBuf2, fModal);
1324
+ }
1325
+
1326
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shinvokeprintercommandw
1327
+ public static SHInvokePrinterCommandW(hwnd: HWND | 0n, uAction: UINT, lpBuf1: LPCWSTR, lpBuf2: LPCWSTR | NULL, fModal: BOOL): BOOL {
1328
+ return Shell32.Load('SHInvokePrinterCommandW')(hwnd, uAction, lpBuf1, lpBuf2, fModal);
1329
+ }
1330
+
1331
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shisfileavailableoffline
1332
+ public static SHIsFileAvailableOffline(pwszPath: LPCWSTR, pdwStatus: LPDWORD | NULL): HRESULT {
1333
+ return Shell32.Load('SHIsFileAvailableOffline')(pwszPath, pdwStatus);
1334
+ }
1335
+
1336
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shlimitinputedit
1337
+ public static SHLimitInputEdit(hwndEdit: HWND, psf: LPVOID): HRESULT {
1338
+ return Shell32.Load('SHLimitInputEdit')(hwndEdit, psf);
1339
+ }
1340
+
1341
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shloadinproc
1342
+ public static SHLoadInProc(rclsid: LPVOID): HRESULT {
1343
+ return Shell32.Load('SHLoadInProc')(rclsid);
1344
+ }
1345
+
1346
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shloadnonloadediconoverlayidentifiers
1347
+ public static SHLoadNonloadedIconOverlayIdentifiers(): HRESULT {
1348
+ return Shell32.Load('SHLoadNonloadedIconOverlayIdentifiers')();
1349
+ }
1350
+
1351
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shmappidltosystemiconlistindex
1352
+ public static SHMapPIDLToSystemImageListIndex(pshf: LPVOID, pidl: PCUITEMID_CHILD, piIndexSel: LPVOID | NULL): INT {
1353
+ return Shell32.Load('SHMapPIDLToSystemImageListIndex')(pshf, pidl, piIndexSel);
1354
+ }
1355
+
1356
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shmultifileproperties
1357
+ public static SHMultiFileProperties(pdtobj: LPVOID, dwFlags: DWORD): HRESULT {
1358
+ return Shell32.Load('SHMultiFileProperties')(pdtobj, dwFlags);
1359
+ }
1360
+
1361
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shobjectproperties
1362
+ public static SHObjectProperties(hwnd: HWND | 0n, shopObjectType: DWORD, pszObjectName: LPCWSTR, pszPropertyPage: LPCWSTR | NULL): BOOL {
1363
+ return Shell32.Load('SHObjectProperties')(hwnd, shopObjectType, pszObjectName, pszPropertyPage);
1364
+ }
1365
+
1366
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shopenfolderandselectitems
1367
+ public static SHOpenFolderAndSelectItems(pidlFolder: PCIDLIST_ABSOLUTE, cidl: UINT, apidl: PCUITEMID_CHILD_ARRAY | NULL, dwFlags: DWORD): HRESULT {
1368
+ return Shell32.Load('SHOpenFolderAndSelectItems')(pidlFolder, cidl, apidl, dwFlags);
1369
+ }
1370
+
1371
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shopenpropsheetw
1372
+ public static SHOpenPropSheetW(pszCaption: LPCWSTR | NULL, ahkeys: LPVOID, ckeys: UINT, pclsidDefault: LPVOID | NULL, pdtobj: LPVOID, psb: LPVOID | NULL, pszStartPage: LPCWSTR | NULL): BOOL {
1373
+ return Shell32.Load('SHOpenPropSheetW')(pszCaption, ahkeys, ckeys, pclsidDefault, pdtobj, psb, pszStartPage);
1374
+ }
1375
+
1376
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shopenwithdialog
1377
+ public static SHOpenWithDialog(hwndParent: HWND | 0n, poainfo: POPENASINFO): HRESULT {
1378
+ return Shell32.Load('SHOpenWithDialog')(hwndParent, poainfo);
1379
+ }
1380
+
1381
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shparsedisplayname
1382
+ public static SHParseDisplayName(pszName: LPCWSTR, pbc: LPVOID | NULL, ppidl: LPVOID, sfgaoIn: SFGAOF, psfgaoOut: LPVOID | NULL): HRESULT {
1383
+ return Shell32.Load('SHParseDisplayName')(pszName, pbc, ppidl, sfgaoIn, psfgaoOut);
1384
+ }
1385
+
1386
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shpathprepareforwritea
1387
+ public static SHPathPrepareForWriteA(hwnd: HWND | 0n, punkEnableModless: LPVOID | NULL, pszPath: LPCSTR, dwFlags: DWORD): HRESULT {
1388
+ return Shell32.Load('SHPathPrepareForWriteA')(hwnd, punkEnableModless, pszPath, dwFlags);
1389
+ }
1390
+
1391
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shpathprepareforwritew
1392
+ public static SHPathPrepareForWriteW(hwnd: HWND | 0n, punkEnableModless: LPVOID | NULL, pszPath: LPCWSTR, dwFlags: DWORD): HRESULT {
1393
+ return Shell32.Load('SHPathPrepareForWriteW')(hwnd, punkEnableModless, pszPath, dwFlags);
1394
+ }
1395
+
1396
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shpropstgcreate
1397
+ public static SHPropStgCreate(psstg: LPVOID, fmtid: LPVOID, pclsid: LPVOID | NULL, grfFlags: DWORD, grfMode: DWORD, dwDisposition: DWORD, ppstg: LPVOID, puCodePage: LPVOID | NULL): HRESULT {
1398
+ return Shell32.Load('SHPropStgCreate')(psstg, fmtid, pclsid, grfFlags, grfMode, dwDisposition, ppstg, puCodePage);
1399
+ }
1400
+
1401
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shpropstgreadmultiple
1402
+ public static SHPropStgReadMultiple(pps: LPVOID, uCodePage: UINT, cpspec: ULONG, rgpspec: LPVOID, rgvar: LPVOID): HRESULT {
1403
+ return Shell32.Load('SHPropStgReadMultiple')(pps, uCodePage, cpspec, rgpspec, rgvar);
1404
+ }
1405
+
1406
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shpropstgwritemultiple
1407
+ public static SHPropStgWriteMultiple(pps: LPVOID, puCodePage: LPVOID | NULL, cpspec: ULONG, rgpspec: LPVOID, rgvar: LPVOID, propidNameFirst: UINT): HRESULT {
1408
+ return Shell32.Load('SHPropStgWriteMultiple')(pps, puCodePage, cpspec, rgpspec, rgvar, propidNameFirst);
1409
+ }
1410
+
1411
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shqueryrecyclebina
1412
+ public static SHQueryRecycleBinA(pszRootPath: LPCSTR | NULL, pSHQueryRBInfo: PSHQUERYRBINFO): HRESULT {
1413
+ return Shell32.Load('SHQueryRecycleBinA')(pszRootPath, pSHQueryRBInfo);
1414
+ }
1415
+
1416
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shqueryrecyclebinw
1417
+ public static SHQueryRecycleBinW(pszRootPath: LPCWSTR | NULL, pSHQueryRBInfo: PSHQUERYRBINFO): HRESULT {
1418
+ return Shell32.Load('SHQueryRecycleBinW')(pszRootPath, pSHQueryRBInfo);
1419
+ }
1420
+
1421
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shqueryusernotificationstate
1422
+ public static SHQueryUserNotificationState(pquns: LPVOID): HRESULT {
1423
+ return Shell32.Load('SHQueryUserNotificationState')(pquns);
1424
+ }
1425
+
1426
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shremovelocalizedname
1427
+ public static SHRemoveLocalizedName(pszPath: LPCWSTR): HRESULT {
1428
+ return Shell32.Load('SHRemoveLocalizedName')(pszPath);
1429
+ }
1430
+
1431
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shreplacefromPropSheetextarray
1432
+ public static SHReplaceFromPropSheetExtArray(hpsxa: HPSXA, uPageID: UINT, lpfnReplaceWith: LPFNADDPROPSHEETPAGE, lParam: LPARAM): UINT {
1433
+ return Shell32.Load('SHReplaceFromPropSheetExtArray')(hpsxa, uPageID, lpfnReplaceWith, lParam);
1434
+ }
1435
+
1436
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shresolvelibrary
1437
+ public static SHResolveLibrary(psiLibrary: LPVOID): HRESULT {
1438
+ return Shell32.Load('SHResolveLibrary')(psiLibrary);
1439
+ }
1440
+
1441
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shrestricted
1442
+ public static SHRestricted(rest: DWORD): DWORD {
1443
+ return Shell32.Load('SHRestricted')(rest);
1444
+ }
1445
+
1446
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl/nf-shobjidl-shsetdefaultproperties
1447
+ public static SHSetDefaultProperties(hwnd: HWND | 0n, psi: LPVOID, dwFileOpFlags: DWORD, pfops: LPVOID | NULL): HRESULT {
1448
+ return Shell32.Load('SHSetDefaultProperties')(hwnd, psi, dwFileOpFlags, pfops);
1449
+ }
1450
+
1451
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shsetfolderpatha
1452
+ public static SHSetFolderPathA(csidl: INT, hToken: HANDLE | 0n, dwFlags: DWORD, pszPath: LPCSTR): HRESULT {
1453
+ return Shell32.Load('SHSetFolderPathA')(csidl, hToken, dwFlags, pszPath);
1454
+ }
1455
+
1456
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shsetfolderpathw
1457
+ public static SHSetFolderPathW(csidl: INT, hToken: HANDLE | 0n, dwFlags: DWORD, pszPath: LPCWSTR): HRESULT {
1458
+ return Shell32.Load('SHSetFolderPathW')(csidl, hToken, dwFlags, pszPath);
1459
+ }
1460
+
1461
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shsetinstanceexplorer
1462
+ public static SHSetInstanceExplorer(punk: LPVOID): void {
1463
+ return Shell32.Load('SHSetInstanceExplorer')(punk);
1464
+ }
1465
+
1466
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shsetknownfolderpath
1467
+ public static SHSetKnownFolderPath(rfid: LPVOID, dwFlags: DWORD, hToken: HANDLE | 0n, pszPath: LPCWSTR): HRESULT {
1468
+ return Shell32.Load('SHSetKnownFolderPath')(rfid, dwFlags, hToken, pszPath);
1469
+ }
1470
+
1471
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shsetlocalizedname
1472
+ public static SHSetLocalizedName(pszPath: LPCWSTR, pszResModule: LPCWSTR, idsRes: INT): HRESULT {
1473
+ return Shell32.Load('SHSetLocalizedName')(pszPath, pszResModule, idsRes);
1474
+ }
1475
+
1476
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-shsettemporarypropertyforitem
1477
+ public static SHSetTemporaryPropertyForItem(psi: LPVOID, propkey: LPVOID, propvar: LPVOID): HRESULT {
1478
+ return Shell32.Load('SHSetTemporaryPropertyForItem')(psi, propkey, propvar);
1479
+ }
1480
+
1481
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shsetunreadmailcountw
1482
+ public static SHSetUnreadMailCountW(pszMailAddress: LPCWSTR, dwCount: DWORD, pszShellExecuteCommand: LPCWSTR): HRESULT {
1483
+ return Shell32.Load('SHSetUnreadMailCountW')(pszMailAddress, dwCount, pszShellExecuteCommand);
1484
+ }
1485
+
1486
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shshellfolderview_message
1487
+ public static SHShellFolderView_Message(hwndMain: HWND, uMsg: UINT, lParam: LPARAM): LRESULT {
1488
+ return Shell32.Load('SHShellFolderView_Message')(hwndMain, uMsg, lParam);
1489
+ }
1490
+
1491
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl/nf-shobjidl-shshowmanagelibraryui
1492
+ public static SHShowManageLibraryUI(psiLibrary: LPVOID, hwndOwner: HWND | 0n, pszTitle: LPCWSTR | NULL, pszInstruction: LPCWSTR | NULL, lmdOptions: DWORD): HRESULT {
1493
+ return Shell32.Load('SHShowManageLibraryUI')(psiLibrary, hwndOwner, pszTitle, pszInstruction, lmdOptions);
1494
+ }
1495
+
1496
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shsimpleidlistfrompath
1497
+ public static SHSimpleIDListFromPath(pszPath: LPCWSTR): PIDLIST_ABSOLUTE {
1498
+ return Shell32.Load('SHSimpleIDListFromPath')(pszPath);
1499
+ }
1500
+
1501
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shstartnetconnectiondialogw
1502
+ public static SHStartNetConnectionDialogW(hwnd: HWND | 0n, pszRemoteName: LPCWSTR, dwType: DWORD): HRESULT {
1503
+ return Shell32.Load('SHStartNetConnectionDialogW')(hwnd, pszRemoteName, dwType);
1504
+ }
1505
+
1506
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj/nf-shlobj-shtesttokenmembership
1507
+ public static SHTestTokenMembership(hToken: HANDLE | 0n, ulRID: ULONG): BOOL {
1508
+ return Shell32.Load('SHTestTokenMembership')(hToken, ulRID);
1509
+ }
1510
+
1511
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shupdateimagea
1512
+ public static SHUpdateImageA(pszHashItem: LPCSTR, iIndex: INT, uFlags: UINT, iImageIndex: INT): void {
1513
+ return Shell32.Load('SHUpdateImageA')(pszHashItem, iIndex, uFlags, iImageIndex);
1514
+ }
1515
+
1516
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shupdateimagew
1517
+ public static SHUpdateImageW(pszHashItem: LPCWSTR, iIndex: INT, uFlags: UINT, iImageIndex: INT): void {
1518
+ return Shell32.Load('SHUpdateImageW')(pszHashItem, iIndex, uFlags, iImageIndex);
1519
+ }
1520
+
1521
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shupdaterecyclebinicon
1522
+ public static SHUpdateRecycleBinIcon(): void {
1523
+ return Shell32.Load('SHUpdateRecycleBinIcon')();
1524
+ }
1525
+
1526
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shvalidateunc
1527
+ public static SHValidateUNC(hwndOwner: HWND | 0n, pszFile: LPWSTR, fConnect: UINT): BOOL {
1528
+ return Shell32.Load('SHValidateUNC')(hwndOwner, pszFile, fConnect);
1529
+ }
1530
+
1531
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-setcurrentprocessexplicitappusermodelid
1532
+ public static SetCurrentProcessExplicitAppUserModelID(AppID: LPCWSTR): HRESULT {
1533
+ return Shell32.Load('SetCurrentProcessExplicitAppUserModelID')(AppID);
1534
+ }
1535
+
1536
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellobouta
1537
+ public static ShellAboutA(hWnd: HWND | 0n, szApp: LPCSTR, szOtherStuff: LPCSTR | NULL, hIcon: HICON | 0n): INT_PTR {
1538
+ return Shell32.Load('ShellAboutA')(hWnd, szApp, szOtherStuff, hIcon);
1539
+ }
1540
+
1541
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shelloboutw
1542
+ public static ShellAboutW(hWnd: HWND | 0n, szApp: LPCWSTR, szOtherStuff: LPCWSTR | NULL, hIcon: HICON | 0n): INT_PTR {
1543
+ return Shell32.Load('ShellAboutW')(hWnd, szApp, szOtherStuff, hIcon);
1544
+ }
1545
+
1546
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutea
1547
+ public static ShellExecuteA(hwnd: HWND | 0n, lpOperation: LPCSTR | NULL, lpFile: LPCSTR, lpParameters: LPCSTR | NULL, lpDirectory: LPCSTR | NULL, nShowCmd: INT): HINSTANCE {
1548
+ return Shell32.Load('ShellExecuteA')(hwnd, lpOperation, lpFile, lpParameters, lpDirectory, nShowCmd);
1549
+ }
1550
+
1551
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecuteexa
1552
+ public static ShellExecuteEx(pExecInfo: LPSHELLEXECUTEINFOA): BOOL {
1553
+ return Shell32.Load('ShellExecuteEx')(pExecInfo);
1554
+ }
1555
+
1556
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecuteexa
1557
+ public static ShellExecuteExA(pExecInfo: LPSHELLEXECUTEINFOA): BOOL {
1558
+ return Shell32.Load('ShellExecuteExA')(pExecInfo);
1559
+ }
1560
+
1561
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecuteexw
1562
+ public static ShellExecuteExW(pExecInfo: LPSHELLEXECUTEINFOW): BOOL {
1563
+ return Shell32.Load('ShellExecuteExW')(pExecInfo);
1564
+ }
1565
+
1566
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutew
1567
+ public static ShellExecuteW(hwnd: HWND | 0n, lpOperation: LPCWSTR | NULL, lpFile: LPCWSTR, lpParameters: LPCWSTR | NULL, lpDirectory: LPCWSTR | NULL, nShowCmd: INT): HINSTANCE {
1568
+ return Shell32.Load('ShellExecuteW')(hwnd, lpOperation, lpFile, lpParameters, lpDirectory, nShowCmd);
1569
+ }
1570
+
1571
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shell_getimagelists
1572
+ public static Shell_GetImageLists(phiml: LPVOID, phimlSmall: LPVOID): BOOL {
1573
+ return Shell32.Load('Shell_GetImageLists')(phiml, phimlSmall);
1574
+ }
1575
+
1576
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shell_mergemenus
1577
+ public static Shell_MergeMenus(hmDst: HMENU, hmSrc: HMENU, uInsert: UINT, uIDAdjust: UINT, uIDAdjustMax: UINT, uFlags: ULONG): UINT {
1578
+ return Shell32.Load('Shell_MergeMenus')(hmDst, hmSrc, uInsert, uIDAdjust, uIDAdjustMax, uFlags);
1579
+ }
1580
+
1581
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shell_notifyicona
1582
+ public static Shell_NotifyIcon(dwMessage: DWORD, lpData: PNOTIFYICONDATAA): BOOL {
1583
+ return Shell32.Load('Shell_NotifyIcon')(dwMessage, lpData);
1584
+ }
1585
+
1586
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shell_notifyicona
1587
+ public static Shell_NotifyIconA(dwMessage: DWORD, lpData: PNOTIFYICONDATAA): BOOL {
1588
+ return Shell32.Load('Shell_NotifyIconA')(dwMessage, lpData);
1589
+ }
1590
+
1591
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shell_notifyicongetrect
1592
+ public static Shell_NotifyIconGetRect(identifier: PNOTIFYICONIDENTIFIER, iconLocation: LPRECT): HRESULT {
1593
+ return Shell32.Load('Shell_NotifyIconGetRect')(identifier, iconLocation);
1594
+ }
1595
+
1596
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shell_notifyiconw
1597
+ public static Shell_NotifyIconW(dwMessage: DWORD, lpData: PNOTIFYICONDATAW): BOOL {
1598
+ return Shell32.Load('Shell_NotifyIconW')(dwMessage, lpData);
1599
+ }
1600
+
1601
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-signalfileopen
1602
+ public static SignalFileOpen(pidl: PCIDLIST_ABSOLUTE): BOOL {
1603
+ return Shell32.Load('SignalFileOpen')(pidl);
1604
+ }
1605
+
1606
+ // https://learn.microsoft.com/en-us/windows/win32/api/shobjidl/nf-shobjidl-stgmakeuniquename
1607
+ public static StgMakeUniqueName(pstgParent: LPVOID, pszFileSpec: LPCWSTR, grfMode: DWORD, riid: LPVOID, ppv: LPVOID): HRESULT {
1608
+ return Shell32.Load('StgMakeUniqueName')(pstgParent, pszFileSpec, grfMode, riid, ppv);
1609
+ }
1610
+
1611
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strchra
1612
+ public static StrChrA(pszStart: LPCSTR, wMatch: WORD): LPSTR {
1613
+ return Shell32.Load('StrChrA')(pszStart, wMatch);
1614
+ }
1615
+
1616
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strchria
1617
+ public static StrChrIA(pszStart: LPCSTR, wMatch: WORD): LPSTR {
1618
+ return Shell32.Load('StrChrIA')(pszStart, wMatch);
1619
+ }
1620
+
1621
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strchriw
1622
+ public static StrChrIW(pszStart: LPCWSTR, wMatch: WORD): LPWSTR {
1623
+ return Shell32.Load('StrChrIW')(pszStart, wMatch);
1624
+ }
1625
+
1626
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strchrw
1627
+ public static StrChrW(pszStart: LPCWSTR, wMatch: WORD): LPWSTR {
1628
+ return Shell32.Load('StrChrW')(pszStart, wMatch);
1629
+ }
1630
+
1631
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strcmpna
1632
+ public static StrCmpNA(psz1: LPCSTR, psz2: LPCSTR, nChar: INT): INT {
1633
+ return Shell32.Load('StrCmpNA')(psz1, psz2, nChar);
1634
+ }
1635
+
1636
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strcmpnia
1637
+ public static StrCmpNIA(psz1: LPCSTR, psz2: LPCSTR, nChar: INT): INT {
1638
+ return Shell32.Load('StrCmpNIA')(psz1, psz2, nChar);
1639
+ }
1640
+
1641
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strcmpniw
1642
+ public static StrCmpNIW(psz1: LPCWSTR, psz2: LPCWSTR, nChar: INT): INT {
1643
+ return Shell32.Load('StrCmpNIW')(psz1, psz2, nChar);
1644
+ }
1645
+
1646
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strcmpnw
1647
+ public static StrCmpNW(psz1: LPCWSTR, psz2: LPCWSTR, nChar: INT): INT {
1648
+ return Shell32.Load('StrCmpNW')(psz1, psz2, nChar);
1649
+ }
1650
+
1651
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strrchra
1652
+ public static StrRChrA(pszStart: LPCSTR, pszEnd: LPCSTR | NULL, wMatch: WORD): LPSTR {
1653
+ return Shell32.Load('StrRChrA')(pszStart, pszEnd, wMatch);
1654
+ }
1655
+
1656
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strrchria
1657
+ public static StrRChrIA(pszStart: LPCSTR, pszEnd: LPCSTR | NULL, wMatch: WORD): LPSTR {
1658
+ return Shell32.Load('StrRChrIA')(pszStart, pszEnd, wMatch);
1659
+ }
1660
+
1661
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strrchriw
1662
+ public static StrRChrIW(pszStart: LPCWSTR, pszEnd: LPCWSTR | NULL, wMatch: WORD): LPWSTR {
1663
+ return Shell32.Load('StrRChrIW')(pszStart, pszEnd, wMatch);
1664
+ }
1665
+
1666
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strrchrw
1667
+ public static StrRChrW(pszStart: LPCWSTR, pszEnd: LPCWSTR | NULL, wMatch: WORD): LPWSTR {
1668
+ return Shell32.Load('StrRChrW')(pszStart, pszEnd, wMatch);
1669
+ }
1670
+
1671
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strrstria
1672
+ public static StrRStrIA(pszSource: LPCSTR, pszLast: LPCSTR | NULL, pszSrch: LPCSTR): LPSTR {
1673
+ return Shell32.Load('StrRStrIA')(pszSource, pszLast, pszSrch);
1674
+ }
1675
+
1676
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strrstriw
1677
+ public static StrRStrIW(pszSource: LPCWSTR, pszLast: LPCWSTR | NULL, pszSrch: LPCWSTR): LPWSTR {
1678
+ return Shell32.Load('StrRStrIW')(pszSource, pszLast, pszSrch);
1679
+ }
1680
+
1681
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strstra
1682
+ public static StrStrA(pszFirst: LPCSTR, pszSrch: LPCSTR): LPSTR {
1683
+ return Shell32.Load('StrStrA')(pszFirst, pszSrch);
1684
+ }
1685
+
1686
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strstria
1687
+ public static StrStrIA(pszFirst: LPCSTR, pszSrch: LPCSTR): LPSTR {
1688
+ return Shell32.Load('StrStrIA')(pszFirst, pszSrch);
1689
+ }
1690
+
1691
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strstriw
1692
+ public static StrStrIW(pszFirst: LPCWSTR, pszSrch: LPCWSTR): LPWSTR {
1693
+ return Shell32.Load('StrStrIW')(pszFirst, pszSrch);
1694
+ }
1695
+
1696
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-strstrw
1697
+ public static StrStrW(pszFirst: LPCWSTR, pszSrch: LPCWSTR): LPWSTR {
1698
+ return Shell32.Load('StrStrW')(pszFirst, pszSrch);
1699
+ }
1700
+
1701
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-wowshellexecute
1702
+ public static WOWShellExecute(hwnd: HWND | 0n, lpOperation: LPCSTR | NULL, lpFile: LPCSTR, lpParameters: LPCSTR | NULL, lpDirectory: LPCSTR | NULL, nShowCmd: INT, lpfnCBWinExec: LPVOID): HINSTANCE {
1703
+ return Shell32.Load('WOWShellExecute')(hwnd, lpOperation, lpFile, lpParameters, lpDirectory, nShowCmd, lpfnCBWinExec);
1704
+ }
1705
+
1706
+ // https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-win32deletefile
1707
+ public static Win32DeleteFile(pszPath: LPCWSTR): BOOL {
1708
+ return Shell32.Load('Win32DeleteFile')(pszPath);
1709
+ }
1710
+
1711
+ // https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-writecabinetstate
1712
+ public static WriteCabinetState(pcs: PCABINETSTATE): BOOL {
1713
+ return Shell32.Load('WriteCabinetState')(pcs);
1714
+ }
1715
+ }
1716
+
1717
+ export default Shell32;