8 use vars qw(@ISA @EXPORT @EXPORT_OK);
14 my $module_declarations = {
15 "SHRegDeleteKeyA" => ["long", ["long", "str"]],
16 "SHChangeNotifyRegister" => ["long", ["long", "long", "long", "long", "long", "ptr"]],
17 "SHChangeNotifyDeregister" => ["long", ["long"]],
18 "SHChangeNotifyUpdateEntryList" => ["long", ["long", "long", "long", "long"]],
19 "ILGetDisplayName" => ["long", ["ptr", "str"]],
20 "ILFindLastID" => ["ptr", ["ptr"]],
21 "ILRemoveLastID" => ["long", ["ptr"]],
22 "ILClone" => ["ptr", ["ptr"]],
23 "ILCloneFirst" => ["ptr", ["ptr"]],
24 "ILGlobalClone" => ["ptr", ["ptr"]],
25 "ILIsEqual" => ["long", ["ptr", "ptr"]],
26 "ILIsParent" => ["long", ["ptr", "ptr", "long"]],
27 "ILFindChild" => ["ptr", ["ptr", "ptr"]],
28 "ILCombine" => ["ptr", ["ptr", "ptr"]],
29 "ILLoadFromStream" => ["long", ["ptr", "ptr"]],
30 "ILSaveToStream" => ["long", ["ptr", "ptr"]],
31 "SHILCreateFromPath" => ["long", ["ptr", "ptr", "ptr"]],
32 "PathIsRoot" => ["long", ["ptr"]],
33 "PathBuildRoot" => ["ptr", ["ptr", "long"]],
34 "PathFindExtension" => ["ptr", ["ptr"]],
35 "PathAddBackslash" => ["ptr", ["ptr"]],
36 "PathRemoveBlanks" => ["void", ["ptr"]],
37 "PathFindFileName" => ["ptr", ["ptr"]],
38 "PathRemoveFileSpec" => ["long", ["ptr"]],
39 "PathAppend" => ["long", ["ptr", "ptr"]],
40 "PathCombine" => ["ptr", ["ptr", "ptr", "ptr"]],
41 "PathStripPath" => ["void", ["ptr"]],
42 "PathIsUNC" => ["long", ["ptr"]],
43 "PathIsRelative" => ["long", ["ptr"]],
44 "PathIsExe" => ["long", ["ptr"]],
45 "PathFileExists" => ["long", ["ptr"]],
46 "PathMatchSpec" => ["long", ["ptr", "ptr"]],
47 "PathMakeUniqueName" => ["long", ["ptr", "long", "ptr", "ptr", "ptr"]],
48 "PathSetDlgItemPath" => ["void", ["long", "long", "ptr"]],
49 "PathQualify" => ["long", ["ptr"]],
50 "PathStripToRoot" => ["long", ["ptr"]],
51 "PathResolve" => ["long", ["ptr", "ptr", "long"]],
52 "PathGetArgs" => ["ptr", ["ptr"]],
53 "DoEnvironmentSubst" => ["long", ["ptr", "ptr"]],
54 "DragAcceptFiles" => ["void", ["long", "long"]],
55 "PathQuoteSpaces" => ["void", ["ptr"]],
56 "PathUnquoteSpaces" => ["void", ["ptr"]],
57 "PathGetDriveNumber" => ["long", ["ptr"]],
58 "ParseField" => ["long", ["ptr", "long", "ptr", "long"]],
59 "ExitWindowsDialog" => ["void", ["long"]],
60 "PickIconDlg" => ["long", ["long", "str", "long", "ptr"]],
61 "GetFileNameFromBrowse" => ["long", ["long", "str", "long", "str", "str", "str", "str"]],
62 "DriveType" => ["long", ["long"]],
63 "IsNetDrive" => ["long", ["long"]],
64 "Shell_MergeMenus" => ["long", ["long", "long", "long", "long", "long", "long"]],
65 "SHGetSetSettings" => ["void", ["long", "long", "long"]],
66 "SHCreateDefClassObject" => ["long", ["ptr", "ptr", "ptr", "ptr", "ptr"]],
67 "Shell_GetImageList" => ["long", ["ptr", "ptr"]],
68 "Shell_GetCachedImageIndex" => ["long", ["ptr", "long", "long"]],
69 "SHShellFolderView_Message" => ["long", ["long", "long", "long"]],
70 "PathYetAnotherMakeUniqueName" => ["long", ["str", "str", "str", "str"]],
71 "SHMapPIDLToSystemImageListIndex" => ["long", ["ptr", "ptr", "ptr"]],
72 "OleStrToStrN" => ["long", ["ptr", "long", "ptr", "long"]],
73 "StrToOleStrN" => ["long", ["wstr", "long", "ptr", "long"]],
74 "DragFinish" => ["void", ["long"]],
75 "DragQueryFile" => ["long", ["long", "long", "str", "long"]],
76 "DragQueryFileA" => ["long", ["long", "long", "str", "long"]],
77 "CIDLData_CreateFromIDArray" => ["long", ["ptr", "long", "ptr", "ptr"]],
78 "SHRegisterDragDrop" => ["long", ["long", "ptr"]],
79 "SHRevokeDragDrop" => ["long", ["long"]],
80 "SHDoDragDrop" => ["long", ["long", "ptr", "ptr", "long", "ptr"]],
81 "SHCloneSpecialIDList" => ["ptr", ["long", "long", "long"]],
82 "PathGetShortPath" => ["ptr", ["ptr"]],
83 "SHLogILFromFSIL" => ["ptr", ["ptr"]],
84 "StrRetToStrN" => ["long", ["ptr", "long", "ptr", "ptr"]],
85 "SHWaitForFileToOpen" => ["long", ["ptr", "long", "long"]],
86 "SHGetRealIDL" => ["ptr", ["ptr", "ptr", "long"]],
87 "SetAppStartingCursor" => ["long", ["long", "long"]],
88 "SHRestricted" => ["long", ["long"]],
89 "SHCoCreateInstance" => ["long", ["str", "ptr", "ptr", "ptr", "ptr"]],
90 "SignalFileOpen" => ["long", ["long"]],
91 "FileMenu_DeleteAllItems" => ["long", ["long"]],
92 "FileMenu_DrawItem" => ["long", ["long", "ptr"]],
93 "FileMenu_FindSubMenuByPidl" => ["long", ["long", "ptr"]],
94 "FileMenu_GetLastSelectedItemPidls" => ["long", ["long", "ptr", "ptr"]],
95 "FileMenu_HandleMenuChar" => ["long", ["long", "long"]],
96 "FileMenu_InitMenuPopup" => ["long", ["long"]],
97 "FileMenu_InsertUsingPidl" => ["long", ["long", "long", "ptr", "long", "long", "ptr"]],
98 "FileMenu_Invalidate" => ["void", ["long"]],
99 "FileMenu_MeasureItem" => ["long", ["long", "ptr"]],
100 "FileMenu_ReplaceUsingPidl" => ["long", ["long", "long", "ptr", "long", "ptr"]],
101 "FileMenu_Create" => ["long", ["long", "long", "long", "long", "long"]],
102 "FileMenu_AppendItem" => ["long", ["long", "ptr", "long", "long", "long", "long"]],
103 "FileMenu_TrackPopupMenuEx" => ["long", ["long", "long", "long", "long", "long", "ptr"]],
104 "FileMenu_DeleteItemByCmd" => ["long", ["long", "long"]],
105 "FileMenu_Destroy" => ["void", ["long"]],
106 "IsLFNDrive" => ["long", ["str"]],
107 "FileMenu_AbortInitMenu" => ["void", []],
108 "SHFlushClipboard" => ["long", []],
109 "RunDLL_CallEntry16" => ["long", ["long", "long", "long", "long", "long"]],
110 "SHFreeUnusedLibraries" => ["void", []],
111 "FileMenu_AppendFilesForPidl" => ["long", ["long", "ptr", "long"]],
112 "FileMenu_AddFilesForPidl" => ["long", ["long", "long", "long", "ptr", "long", "long", "ptr"]],
113 "SHOutOfMemoryMessageBox" => ["long", ["long", "str", "long"]],
114 "SHWinHelp" => ["long", ["long", "long", "long", "long"]],
115 "DllGetClassObject" => ["long", ["ptr", "ptr", "ptr"]],
116 "DAD_AutoScroll" => ["long", ["long", "ptr", "ptr"]],
117 "DAD_DragEnter" => ["long", ["long"]],
118 "DAD_DragEnterEx" => ["long", ["long", "long", "long"]],
119 "DAD_DragLeave" => ["long", []],
120 "DragQueryFileW" => ["long", ["long", "long", "wstr", "long"]],
121 "DAD_DragMove" => ["long", ["long", "long"]],
122 "DragQueryPoint" => ["long", ["long", "ptr"]],
123 "DAD_SetDragImage" => ["long", ["long", "ptr"]],
124 "DAD_ShowDragImage" => ["long", ["long"]],
125 "FileMenu_DeleteItemByIndex" => ["long", ["long", "long"]],
126 "FileMenu_DeleteItemByFirstID" => ["long", ["long", "long"]],
127 "FileMenu_DeleteSeparator" => ["long", ["long"]],
128 "FileMenu_EnableItemByCmd" => ["long", ["long", "long", "long"]],
129 "FileMenu_GetItemExtent" => ["long", ["long", "long"]],
130 "PathFindOnPath" => ["long", ["ptr", "ptr"]],
131 "RLBuildListOfPaths" => ["long", []],
132 "SHCLSIDFromString" => ["long", ["ptr", "ptr"]],
133 "SHFind_InitMenuPopup" => ["ptr", ["long", "long", "long", "long"]],
134 "SHLoadOLE" => ["long", ["long"]],
135 "ILGetSize" => ["long", ["ptr"]],
136 "ILGetNext" => ["ptr", ["ptr"]],
137 "ILAppend" => ["ptr", ["ptr", "ptr", "long"]],
138 "ILFree" => ["long", ["ptr"]],
139 "ILGlobalFree" => ["void", ["ptr"]],
140 "ILCreateFromPath" => ["ptr", ["ptr"]],
141 "PathGetExtension" => ["ptr", ["ptr", "long", "long"]],
142 "PathIsDirectory" => ["long", ["ptr"]],
143 "SHRunControlPanel" => ["long", ["long", "long"]],
144 "SHSimpleIDListFromPath" => ["ptr", ["ptr"]],
145 "StrToOleStr" => ["long", ["wstr", "ptr"]],
146 "Win32DeleteFile" => ["long", ["str"]],
147 "SHCreateDirectory" => ["long", ["ptr", "str"]],
148 "CallCPLEntry16" => ["long", ["long", "ptr", "long", "long", "long", "long"]],
149 "SHAddFromPropSheetExtArray" => ["long", ["long", "long", "long"]],
150 "SHCreatePropSheetExtArray" => ["long", ["long", "str", "long"]],
151 "SHDestroyPropSheetExtArray" => ["long", ["long"]],
152 "SHReplaceFromPropSheetExtArray" => ["long", ["long", "long", "long", "long"]],
153 "PathCleanupSpec" => ["long", ["ptr", "ptr"]],
154 "SHValidateUNC" => ["long", ["long", "long", "long"]],
155 "SHCreateShellFolderViewEx" => ["long", ["ptr", "ptr"]],
156 "SHGetSpecialFolderPath" => ["long", ["long", "ptr", "long", "long"]],
157 "SHSetInstanceExplorer" => ["long", ["ptr"]],
158 "RegisterShellHook" => ["long", ["long", "long"]],
159 "ArrangeWindows" => ["long", ["long", "long", "ptr", "long", "ptr"]],
160 "SHFree" => ["void", ["ptr"]],
161 "SHAlloc" => ["ptr", ["long"]],
162 "SHAbortInvokeCommand" => ["long", []],
163 "SHInitRestricted" => ["long", ["str", "str"]],
164 "SHGetDataFromIDListA" => ["long", ["ptr", "ptr", "long", "ptr", "long"]],
165 "SHGetDataFromIDListW" => ["long", ["ptr", "ptr", "long", "ptr", "long"]],
166 "PathParseIconLocation" => ["long", ["ptr"]],
167 "PathRemoveExtension" => ["void", ["ptr"]],
168 "PathRemoveArgs" => ["void", ["ptr"]],
169 "SheChangeDirW" => ["long", ["wstr"]],
170 "SheGetDirW" => ["long", ["wstr", "wstr"]],
171 "ShellAboutA" => ["long", ["long", "str", "str", "long"]],
172 "ShellAboutW" => ["long", ["long", "wstr", "wstr", "long"]],
173 "ShellExecuteA" => ["long", ["long", "str", "str", "str", "str", "long"]],
174 "ShellExecuteEx" => ["long", ["ptr"]],
175 "ShellExecuteExA" => ["long", ["ptr"]],
176 "ShellExecuteExW" => ["long", ["ptr"]],
177 "ShellExecuteW" => ["long", ["long", "wstr", "wstr", "wstr", "wstr", "long"]],
178 "Shell_NotifyIcon" => ["long", ["long", "ptr"]],
179 "Shell_NotifyIconA" => ["long", ["long", "ptr"]],
180 "Shell_NotifyIconW" => ["long", ["long", "ptr"]],
181 "SHRegOpenKeyA" => ["long", ["long", "str", "ptr"]],
182 "SHRegOpenKeyW" => ["long", ["long", "wstr", "ptr"]],
183 "SHRegQueryValueExA" => ["long", ["long", "str", "ptr", "ptr", "ptr", "ptr"]],
184 "SHRegQueryValueW" => ["long", ["long", "wstr", "wstr", "ptr"]],
185 "SHRegQueryValueExW" => ["long", ["long", "wstr", "ptr", "ptr", "ptr", "ptr"]],
186 "SHRegDeleteKeyW" => ["long", ["long", "wstr"]],
187 "SHAllocShared" => ["long", ["ptr", "long", "long"]],
188 "SHLockShared" => ["ptr", ["long", "long"]],
189 "SHUnlockShared" => ["long", ["ptr"]],
190 "SHFreeShared" => ["long", ["long", "long"]],
191 "NTSHChangeNotifyRegister" => ["long", ["long", "long", "long", "long", "long", "ptr"]],
192 "NTSHChangeNotifyDeregister" => ["long", ["long"]],
193 "SHChangeNotification_Lock" => ["long", ["long", "long", "undef", "ptr"]],
194 "SHChangeNotification_Unlock" => ["long", ["long"]],
195 "PathIsSameRoot" => ["long", ["ptr", "ptr"]],
196 "ReadCabinetState" => ["long", ["long", "long"]],
197 "WriteCabinetState" => ["long", ["long"]],
198 "PathProcessCommand" => ["long", ["ptr", "ptr", "long", "long"]],
199 "FileIconInit" => ["long", ["long"]],
200 "IsUserAdmin" => ["long", []],
201 "CommandLineToArgvW" => ["ptr", ["wstr", "ptr"]],
202 "Control_FillCache_RunDLL" => ["long", ["long", "long", "long", "long"]],
203 "Control_RunDLL" => ["void", ["long", "long", "str", "long"]],
204 "DllCanUnloadNow" => ["long", []],
205 "DllGetVersion" => ["long", ["ptr"]],
206 "DllInstall" => ["long", ["long", "wstr"]],
207 "DoEnvironmentSubstA" => ["long", ["str", "str"]],
208 "DoEnvironmentSubstW" => ["long", ["wstr", "wstr"]],
209 "DuplicateIcon" => ["long", ["long", "long"]],
210 "ExtractAssociatedIconA" => ["long", ["long", "str", "ptr"]],
211 "ExtractAssociatedIconExA" => ["long", ["long", "long", "long", "long"]],
212 "ExtractAssociatedIconExW" => ["long", ["long", "long", "long", "long"]],
213 "ExtractIconA" => ["long", ["long", "str", "long"]],
214 "ExtractIconEx" => ["long", ["ptr", "long", "ptr", "ptr", "long"]],
215 "ExtractIconExA" => ["long", ["str", "long", "ptr", "ptr", "long"]],
216 "ExtractIconExW" => ["long", ["wstr", "long", "ptr", "ptr", "long"]],
217 "ExtractIconW" => ["long", ["long", "wstr", "long"]],
218 "FindExecutableA" => ["long", ["str", "str", "str"]],
219 "FindExecutableW" => ["long", ["wstr", "wstr", "wstr"]],
220 "FreeIconList" => ["void", ["long"]],
221 "SHAddToRecentDocs" => ["long", ["long", "ptr"]],
222 "SHAppBarMessage" => ["long", ["long", "ptr"]],
223 "SHBrowseForFolder" => ["ptr", ["ptr"]],
224 "SHBrowseForFolderA" => ["ptr", ["ptr"]],
225 "SHBrowseForFolderW" => ["ptr", ["ptr"]],
226 "SHChangeNotify" => ["void", ["long", "long", "ptr", "ptr"]],
227 "SHFileOperation" => ["long", ["ptr"]],
228 "SHFileOperationA" => ["long", ["ptr"]],
229 "SHFileOperationW" => ["long", ["ptr"]],
230 "SHGetDesktopFolder" => ["long", ["ptr"]],
231 "SHGetFileInfo" => ["long", ["ptr", "long", "ptr", "long", "long"]],
232 "SHGetFileInfoA" => ["long", ["str", "long", "ptr", "long", "long"]],
233 "SHGetFileInfoW" => ["long", ["wstr", "long", "ptr", "long", "long"]],
234 "SHGetFolderLocation" => ["long", ["long", "long", "long", "long", "ptr"]],
235 "SHGetFolderPathA" => ["long", ["long", "long", "long", "long", "str"]],
236 "SHGetFolderPathW" => ["long", ["long", "long", "long", "long", "wstr"]],
237 "SHGetInstanceExplorer" => ["long", ["ptr"]],
238 "SHGetMalloc" => ["long", ["ptr"]],
239 "SHGetPathFromIDList" => ["long", ["ptr", "ptr"]],
240 "SHGetPathFromIDListA" => ["long", ["ptr", "str"]],
241 "SHGetPathFromIDListW" => ["long", ["ptr", "wstr"]],
242 "SHGetSettings" => ["void", ["ptr", "long"]],
243 "SHGetSpecialFolderLocation" => ["long", ["long", "long", "ptr"]],
244 "SHGetSpecialFolderPathA" => ["long", ["long", "str", "long", "long"]],
245 "SHHelpShortcuts_RunDLL" => ["long", ["long", "long", "long", "long"]],
246 "SHLoadInProc" => ["long", ["ptr"]]
249 &wine::declare("shell32",%$module_declarations);
250 push @EXPORT, map { "&" . $_; } sort(keys(%$module_declarations));