Added win32 enhanced functionality to timer callbacks.
[wine/wine64.git] / dlls / shell32 / shellord.c
blob245bd7c17c45159df2e60281c940098a64720215
1 /*
2 * Shell Ordinal Functions
4 * These are completely undocumented. The meaning of the functions changes
5 * between different OS versions (NT uses Unicode strings, 95 uses ASCII
6 * strings, etc. etc.)
7 *
8 * They are just here so that explorer.exe and iexplore.exe can be tested.
10 * Copyright 1997 Marcus Meissner
11 * 1998 Jürgen Schmied
13 #include <stdlib.h>
14 #include <string.h>
15 #include <unistd.h>
16 #include <ctype.h>
17 #include "windows.h"
18 #include "winerror.h"
19 #include "file.h"
20 #include "shell.h"
21 #include "heap.h"
22 #include "module.h"
23 #include "neexe.h"
24 #include "resource.h"
25 #include "dlgs.h"
26 #include "win.h"
27 #include "graphics.h"
28 #include "cursoricon.h"
29 #include "interfaces.h"
30 #include "shlobj.h"
31 #include "debug.h"
32 #include "winreg.h"
33 #include "shell32_main.h"
35 /*************************************************************************
36 * SHChangeNotifyRegister [SHELL32.2]
37 * NOTES
38 * Idlist is an array of structures and Count specifies how many items in the array
39 * (usually just one I think).
41 DWORD WINAPI
42 SHChangeNotifyRegister(
43 HWND32 hwnd,
44 LONG events1,
45 LONG events2,
46 DWORD msg,
47 int count,
48 IDSTRUCT *idlist)
49 { FIXME(shell,"(0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):stub.\n",
50 hwnd,events1,events2,msg,count,idlist);
51 return 0;
53 /*************************************************************************
54 * SHChangeNotifyDeregister [SHELL32.4]
56 DWORD WINAPI
57 SHChangeNotifyDeregister(LONG x1,LONG x2)
58 { FIXME(shell,"(0x%08lx,0x%08lx):stub.\n",x1,x2);
59 return 0;
62 /*************************************************************************
63 * PathIsRoot [SHELL32.29]
65 BOOL32 WINAPI PathIsRoot(LPCSTR x) {
66 TRACE(shell,"%s\n",x);
67 if (!strcmp(x+1,":\\")) /* "X:\" */
68 return 1;
69 if (!strcmp(x,"\\")) /* "\" */
70 return 1;
71 if (x[0]=='\\' && x[1]=='\\') { /* UNC "\\<xx>\" */
72 int foundbackslash = 0;
73 x=x+2;
74 while (*x) {
75 if (*x++=='\\')
76 foundbackslash++;
78 if (foundbackslash<=1) /* max 1 \ more ... */
79 return 1;
81 return 0;
84 /*************************************************************************
85 * PathBuildRoot [SHELL32.30]
87 LPSTR WINAPI PathBuildRoot(LPSTR root,BYTE drive) {
88 TRACE(shell,"%p %i\n",root, drive);
89 strcpy(root,"A:\\");
90 root[0]+=drive;
91 return root;
94 /*************************************************************************
95 * PathFindExtension [SHELL32.31]
97 * NOTES
98 * returns pointer to last . in last pathcomponent or at \0.
100 LPSTR WINAPI PathFindExtension(LPSTR path) {
101 LPSTR lastpoint = NULL;
102 TRACE(shell,"%p %s\n",path,path);
103 while (*path) {
104 if (*path=='\\'||*path==' ')
105 lastpoint=NULL;
106 if (*path=='.')
107 lastpoint=path;
108 path++;
110 return lastpoint?lastpoint:path;
113 /*************************************************************************
114 * PathAddBackslash [SHELL32.32]
116 * NOTES
117 * append \ if there is none
119 LPSTR WINAPI PathAddBackslash(LPSTR path)
120 { int len;
121 TRACE(shell,"%p->%s\n",path,path);
122 len = strlen(path);
123 if (len && path[len-1]!='\\')
124 { path[len+0]='\\';
125 path[len+1]='\0';
126 return path+len+1;
128 else
129 return path+len;
132 /*************************************************************************
133 * PathRemoveBlanks [SHELL32.33]
135 * NOTES
136 * remove spaces from beginning and end of passed string
138 LPSTR WINAPI PathRemoveBlanks(LPSTR str)
139 { LPSTR x = str;
140 TRACE(shell,"%s\n",str);
141 while (*x==' ') x++;
142 if (x!=str)
143 strcpy(str,x);
144 if (!*str)
145 return str;
146 x=str+strlen(str)-1;
147 while (*x==' ')
148 x--;
149 if (*x==' ')
150 *x='\0';
151 return x;
155 /*************************************************************************
156 * PathFindFilename [SHELL32.34]
158 * NOTES
159 * basename(char *fn);
161 LPSTR WINAPI PathFindFilename(LPSTR fn)
162 { LPSTR basefn;
163 TRACE(shell,"%s\n",fn);
164 basefn = fn;
165 while (fn[0])
166 { if (((fn[0]=='\\') || (fn[0]==':')) && fn[1] && fn[1]!='\\')
167 basefn = fn+1;
168 fn++;
170 return basefn;
173 /*************************************************************************
174 * PathRemoveFileSpec [SHELL32.35]
176 * NOTES
177 * bool getpath(char *pathname); truncates passed argument to a valid path
178 * returns if the string was modified or not.
179 * "\foo\xx\foo"-> "\foo\xx"
180 * "\" -> "\"
181 * "a:\foo" -> "a:\"
183 DWORD WINAPI PathRemoveFileSpec(LPSTR fn) {
184 LPSTR x,cutplace;
185 TRACE(shell,"%s\n",fn);
186 if (!fn[0])
187 return 0;
188 x=fn;
189 cutplace = fn;
190 while (*x) {
191 if (*x=='\\') {
192 cutplace=x++;
193 continue;
195 if (*x==':') {
196 x++;
197 if (*x=='\\')
198 cutplace=++x;
199 continue; /* already x++ed */
201 x++;
203 if (!*cutplace)
204 return 0;
205 if (cutplace==fn) {
206 if (fn[0]=='\\') {
207 if (!fn[1])
208 return 0;
209 fn[0]='\0';
210 return 1;
213 *cutplace='\0';
214 return 1;
217 /*************************************************************************
218 * PathAppend [SHELL32.36]
220 * NOTES
221 * concat_paths(char*target,const char*add);
222 * concats "target\\add" and writes them to target
224 LPSTR WINAPI PathAppend(LPSTR x1,LPSTR x2) {
225 TRACE(shell,"%s %s\n",x1,x2);
226 while (x2[0]=='\\') x2++;
227 return PathCombine(x1,x1,x2);
230 /*************************************************************************
231 * PathCombine [SHELL32.37]
233 * NOTES
234 * if lpszFile='.' skip it
236 LPSTR WINAPI PathCombine(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile)
237 { TRACE(shell,"%s %s\n",lpszDir,lpszFile);
239 if (!lpszFile || !lpszFile[0] || (lpszFile[0]=='.' && !lpszFile[1]) )
240 { strcpy(szDest,lpszDir);
241 return szDest;
243 strcpy(szDest,lpszDir);
244 PathAddBackslash(szDest);
245 strcat(szDest,lpszFile);
246 return szDest;
249 /*************************************************************************
250 * PathIsUNC [SHELL32.39]
252 * NOTES
253 * PathIsUNC(char*path);
255 BOOL32 WINAPI PathIsUNC(LPCSTR path) {
256 TRACE(shell,"%s\n",path);
257 if ((path[0]=='\\') && (path[1]=='\\'))
258 return TRUE;
259 return FALSE;
261 /*************************************************************************
262 * PathIsExe [SHELL32.43]
265 BOOL32 WINAPI PathIsExe (LPCSTR path)
266 { TRACE(shell,"path=%s\n",path);
267 return FALSE;
270 /*************************************************************************
271 * PathFileExists [SHELL32.45]
273 * NOTES
274 * file_exists(char *fn);
276 BOOL32 WINAPI PathFileExists(LPSTR fn) {
277 TRACE(shell,"%s\n",fn);
278 if (GetFileAttributes32A(fn)==-1)
279 return FALSE;
280 else
281 return TRUE;
283 /*************************************************************************
284 * PathMatchSpec [SHELL32.46]
286 * NOTES
287 * used from COMDLG32
290 BOOL32 WINAPI PathMatchSpec(LPSTR x, LPSTR y)
291 { FIXME(shell,"%s %s stub\n",x,y);
292 return TRUE;
295 /*************************************************************************
296 * PathResolve [SHELL32.51]
298 DWORD WINAPI PathResolve(LPCSTR s,DWORD x2,DWORD x3) {
299 FIXME(shell,"(%s,0x%08lx,0x%08lx),stub!\n",s,x2,x3);
300 return 0;
303 /*************************************************************************
304 * PathGetArgs [SHELL32.52]
306 * NOTES
307 * look for next arg in string. handle "quoted" strings
308 * returns pointer to argument *AFTER* the space. Or to the \0.
310 LPSTR WINAPI PathGetArgs(LPSTR cmdline) {
311 BOOL32 qflag = FALSE;
312 TRACE(shell,"%s\n",cmdline);
313 while (*cmdline) {
314 if ((*cmdline==' ') && !qflag)
315 return cmdline+1;
316 if (*cmdline=='"')
317 qflag=!qflag;
318 cmdline++;
320 return cmdline;
323 /*************************************************************************
324 * PathUnquoteSpaces [SHELL32.56]
326 * NOTES
327 * unquote string (remove ")
329 VOID WINAPI PathUnquoteSpaces(LPSTR str) {
330 DWORD len = lstrlen32A(str);
331 TRACE(shell,"%s\n",str);
332 if (*str!='"') return;
333 if (str[len-1]!='"') return;
334 str[len-1]='\0';
335 lstrcpy32A(str,str+1);
336 return;
339 /*************************************************************************
340 * ParseField [SHELL32.58]
343 DWORD WINAPI ParseField(LPCSTR src,DWORD x2,LPSTR target,DWORD pathlen) {
344 FIXME(shell,"(%s,0x%08lx,%p,%ld):stub.\n",
345 src,x2,target,pathlen
347 if (!src)
348 return 0;
349 return 0;
352 /*************************************************************************
353 * PickIconDlg [SHELL32.62]
356 DWORD WINAPI PickIconDlg(DWORD x,DWORD y,DWORD z,DWORD a) {
357 FIXME(shell,"(%08lx,%08lx,%08lx,%08lx):stub.\n",x,y,z,a);
358 return 0xffffffff;
361 /*************************************************************************
362 * GetFileNameFromBrowse [SHELL32.63]
365 DWORD WINAPI GetFileNameFromBrowse(HWND32 howner, LPSTR targetbuf, DWORD len, DWORD x, LPCSTR suffix, LPCSTR y, LPCSTR cmd) {
366 FIXME(shell,"(%04x,%p,%ld,%08lx,%s,%s,%s):stub.\n",
367 howner,targetbuf,len,x,suffix,y,cmd
369 /* puts up a Open Dialog and requests input into targetbuf */
370 /* OFN_HIDEREADONLY|OFN_NOCHANGEDIR|OFN_FILEMUSTEXIST|OFN_unknown */
371 lstrcpy32A(targetbuf,"x:\\s3.exe");
372 return 1;
375 /*************************************************************************
376 * SHGetSettings [SHELL32.68]
379 DWORD WINAPI SHGetSettings(DWORD x,DWORD y,DWORD z) {
380 FIXME(shell,"(0x%08lx,0x%08lx,0x%08lx):stub.\n",
381 x,y,z
383 return 0;
386 /*************************************************************************
387 * Shell_GetCachedImageIndex [SHELL32.72]
390 void WINAPI Shell_GetCachedImageIndex(LPSTR x,DWORD y,DWORD z)
391 { FIXME(shell,"(%s,%08lx,%08lx):stub.\n",x,y,z);
394 /*************************************************************************
395 * SHShellFolderView_Message [SHELL32.73]
397 * PARAMETERS
398 * hwndCabinet defines the explorer cabinet window that contains the
399 * shellview you need to communicate with
400 * uMsg identifying the SFVM enum to perform
401 * lParam
403 * NOTES
404 * Message SFVM_REARRANGE = 1
405 * This message gets sent when a column gets clicked to instruct the
406 * shell view to re-sort the item list. lParam identifies the column
407 * that was clicked.
409 int WINAPI SHShellFolderView_Message(HWND32 hwndCabinet,UINT32 uMsg,LPARAM lParam)
410 { FIXME(shell,"%04x %08ux %08lx stub\n",hwndCabinet,uMsg,lParam);
411 return 0;
414 /*************************************************************************
415 * PathYetAnotherMakeUniqueName [SHELL32.75]
417 * NOTES
418 * exported by ordinal
420 BOOL32 WINAPI PathYetAnotherMakeUniqueName(LPDWORD x,LPDWORD y) {
421 FIXME(shell,"(%p,%p):stub.\n",x,y);
422 return TRUE;
425 /*************************************************************************
426 * SHMapPIDLToSystemImageListIndex [SHELL32.77]
428 * PARAMETERS
429 * x pointer to an instance of IShellFolder
431 * NOTES
432 * exported by ordinal
435 DWORD WINAPI
436 SHMapPIDLToSystemImageListIndex(LPSHELLFOLDER sh,DWORD y,DWORD z)
437 { FIXME(shell,"(SF=%p,pidl=%08lx,%08lx):stub.\n",sh,y,z);
438 return 0;
441 /*************************************************************************
442 * OleStrToStrN [SHELL32.78]
444 * NOTES
445 * exported by ordinal
446 * FIXME
447 * wrong implemented OleStr is NOT wide string !!!! (jsch)
449 BOOL32 WINAPI
450 OleStrToStrN (LPSTR lpMulti, INT32 nMulti, LPCWSTR lpWide, INT32 nWide) {
451 return WideCharToMultiByte (0, 0, lpWide, nWide,
452 lpMulti, nMulti, NULL, NULL);
455 /*************************************************************************
456 * StrToOleStrN [SHELL32.79]
458 * NOTES
459 * exported by ordinal
460 * FIXME
461 * wrong implemented OleStr is NOT wide string !!!! (jsch)
463 BOOL32 WINAPI
464 StrToOleStrN (LPWSTR lpWide, INT32 nWide, LPCSTR lpMulti, INT32 nMulti) {
465 return MultiByteToWideChar (0, 0, lpMulti, nMulti, lpWide, nWide);
468 /*************************************************************************
469 * SHCloneSpecialIDList [SHELL32.89]
471 * PARAMETERS
472 * hwndOwner [in]
473 * nFolder [in] CSIDL_xxxxx ??
475 * RETURNS
476 * pidl ??
477 * NOTES
478 * exported by ordinal
480 LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND32 hwndOwner,DWORD nFolder,DWORD x3)
481 { LPITEMIDLIST ppidl;
482 WARN(shell,"(hwnd=0x%x,csidl=0x%lx,0x%lx):semi-stub.\n",
483 hwndOwner,nFolder,x3);
485 SHGetSpecialFolderLocation(hwndOwner, nFolder, &ppidl);
487 return ppidl;
490 /*************************************************************************
491 * IsLFNDrive [SHELL32.119]
493 * NOTES
494 * exported by ordinal Name
496 BOOL32 WINAPI IsLFNDrive(LPCSTR path) {
497 DWORD fnlen;
499 if (!GetVolumeInformation32A(path,NULL,0,NULL,&fnlen,NULL,NULL,0))
500 return FALSE;
501 return fnlen>12;
504 /*************************************************************************
505 * SHGetSpecialFolderPath [SHELL32.175]
507 * NOTES
508 * exported by ordinal
510 void WINAPI SHGetSpecialFolderPath(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
511 FIXME(shell,"(0x%04lx,0x%04lx,csidl=0x%04lx,0x%04lx):stub.\n",
512 x1,x2,x3,x4
516 /*************************************************************************
517 * RegisterShellHook [SHELL32.181]
519 * PARAMS
520 * hwnd [I] window handle
521 * y [I] flag ????
523 * NOTES
524 * exported by ordinal
526 void WINAPI RegisterShellHook32(HWND32 hwnd, DWORD y) {
527 FIXME(shell,"(0x%08x,0x%08lx):stub.\n",hwnd,y);
530 /*************************************************************************
531 * ShellMessageBoxA [SHELL32.183]
533 * Format and output errormessage.
535 * NOTES
536 * exported by ordinal
538 void __cdecl
539 ShellMessageBoxA(HMODULE32 hmod,HWND32 hwnd,DWORD id,DWORD x,DWORD type,LPVOID arglist) {
540 char buf[100],buf2[100]/*,*buf3*/;
541 /* LPVOID args = &arglist;*/
543 if (!LoadString32A(hmod,x,buf,100))
544 strcpy(buf,"Desktop");
545 // LoadString32A(hmod,id,buf2,100);
546 /* FIXME: the varargs handling doesn't. */
547 // FormatMessage32A(0x500,buf2,0,0,(LPSTR)&buf3,256,(LPDWORD)&args);
549 FIXME(shell,"(%08lx,%08lx,%08lx(%s),%08lx(%s),%08lx,%p):stub.\n",
550 (DWORD)hmod,(DWORD)hwnd,id,buf2,x,buf,type,arglist
552 /*MessageBox32A(hwnd,buf3,buf,id|0x10000);*/
555 /*************************************************************************
556 * SHRestricted [SHELL32.100]
558 * walks through policy table, queries <app> key, <type> value, returns
559 * queried (DWORD) value.
560 * {0x00001,Explorer,NoRun}
561 * {0x00002,Explorer,NoClose}
562 * {0x00004,Explorer,NoSaveSettings}
563 * {0x00008,Explorer,NoFileMenu}
564 * {0x00010,Explorer,NoSetFolders}
565 * {0x00020,Explorer,NoSetTaskbar}
566 * {0x00040,Explorer,NoDesktop}
567 * {0x00080,Explorer,NoFind}
568 * {0x00100,Explorer,NoDrives}
569 * {0x00200,Explorer,NoDriveAutoRun}
570 * {0x00400,Explorer,NoDriveTypeAutoRun}
571 * {0x00800,Explorer,NoNetHood}
572 * {0x01000,Explorer,NoStartBanner}
573 * {0x02000,Explorer,RestrictRun}
574 * {0x04000,Explorer,NoPrinterTabs}
575 * {0x08000,Explorer,NoDeletePrinter}
576 * {0x10000,Explorer,NoAddPrinter}
577 * {0x20000,Explorer,NoStartMenuSubFolders}
578 * {0x40000,Explorer,MyDocsOnNet}
579 * {0x80000,WinOldApp,NoRealMode}
581 * NOTES
582 * exported by ordinal
584 DWORD WINAPI SHRestricted (DWORD pol) {
585 HKEY xhkey;
587 FIXME(shell,"(%08lx):stub.\n",pol);
588 if (RegOpenKey32A(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies",&xhkey))
589 return 0;
590 /* FIXME: do nothing for now, just return 0 (== "allowed") */
591 RegCloseKey(xhkey);
592 return 0;
595 /*************************************************************************
596 * PathGetExtension [SHELL32.158]
598 * NOTES
599 * exported by ordinal
601 LPSTR WINAPI PathGetExtension(LPSTR path,DWORD y,DWORD z)
602 { TRACE(shell,"(%s,%08lx,%08lx)\n",path,y,z);
603 path = PathFindExtension(path);
604 return *path?(path+1):path;
607 /*************************************************************************
608 * SHCreateDirectory [SHELL32.165]
610 * NOTES
611 * exported by ordinal
612 * not sure about LPSECURITY_ATTRIBUTES
614 DWORD WINAPI SHCreateDirectory(LPSECURITY_ATTRIBUTES sec,LPCSTR path) {
615 TRACE(shell,"(%p,%s):stub.\n",sec,path);
616 if (CreateDirectory32A(path,sec))
617 return TRUE;
618 /* SHChangeNotify(8,1,path,0); */
619 return FALSE;
620 #if 0
621 if (SHELL32_79(path,(LPVOID)x))
622 return 0;
623 FIXME(shell,"(%08lx,%s):stub.\n",x,path);
624 return 0;
625 #endif
628 /*************************************************************************
629 * SHFree [SHELL32.195]
631 * NOTES
632 * free_ptr() - frees memory using IMalloc
633 * exported by ordinal
635 DWORD WINAPI SHFree(LPVOID x) {
636 TRACE(shell,"%p\n",x);
637 /*return LocalFree32((HANDLE32)x);*/ /* crashes */
638 return HeapFree(GetProcessHeap(),0,x);
641 /*************************************************************************
642 * SHAlloc [SHELL32.196]
644 * NOTES
645 * void *task_alloc(DWORD len), uses SHMalloc allocator
646 * exported by ordinal
648 LPVOID WINAPI SHAlloc(DWORD len) {
649 /* void * ret = (LPVOID)LocalAlloc32(len,LMEM_ZEROINIT);*/ /* chrashes */
650 void * ret = (LPVOID) HeapAlloc(GetProcessHeap(),0,len);
651 TRACE(shell,"%lu bytes at %p\n",len, ret);
652 return ret;
655 /*************************************************************************
656 * OpenRegStream [SHELL32.85]
658 * NOTES
659 * exported by ordinal
661 DWORD WINAPI OpenRegStream(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
662 FIXME(shell,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx):stub.\n",
663 x1,x2,x3,x4
665 return 0;
668 /*************************************************************************
669 * SHRegisterDragDrop [SHELL32.86]
671 * NOTES
672 * exported by ordinal
674 DWORD WINAPI SHRegisterDragDrop(HWND32 hwnd,DWORD x2) {
675 FIXME (shell, "(0x%08x,0x%08lx):stub.\n", hwnd, x2);
676 return 0;
679 /*************************************************************************
680 * SHRevokeDragDrop [SHELL32.87]
682 * NOTES
683 * exported by ordinal
685 DWORD WINAPI SHRevokeDragDrop(DWORD x) {
686 FIXME(shell,"(0x%08lx):stub.\n",x);
687 return 0;
690 /*************************************************************************
691 * RunFileDlg [SHELL32.61]
693 * NOTES
694 * Original name: RunFileDlg (exported by ordinal)
696 DWORD WINAPI
697 RunFileDlg (HWND32 hwndOwner, DWORD dwParam1, DWORD dwParam2,
698 LPSTR lpszTitle, LPSTR lpszPrompt, UINT32 uFlags)
700 FIXME (shell,"(0x%08x 0x%lx 0x%lx \"%s\" \"%s\" 0x%x):stub.\n",
701 hwndOwner, dwParam1, dwParam2, lpszTitle, lpszPrompt, uFlags);
702 return 0;
705 /*************************************************************************
706 * ExitWindowsDialog [SHELL32.60]
708 * NOTES
709 * exported by ordinal
711 DWORD WINAPI
712 ExitWindowsDialog (HWND32 hwndOwner)
714 FIXME (shell,"(0x%08x):stub.\n", hwndOwner);
715 return 0;
718 /*************************************************************************
719 * ArrangeWindows [SHELL32.184]
722 DWORD WINAPI
723 ArrangeWindows (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3,
724 DWORD dwParam4, DWORD dwParam5)
726 FIXME (shell,"(0x%lx 0x%lx 0x%lx 0x%lx 0x%lx):stub.\n",
727 dwParam1, dwParam2, dwParam3, dwParam4, dwParam5);
728 return 0;
731 /*************************************************************************
732 * SHCLSIDFromString [SHELL32.147]
734 * NOTES
735 * exported by ordinal
737 DWORD WINAPI
738 SHCLSIDFromString (DWORD dwParam1, DWORD dwParam2)
740 FIXME (shell,"(0x%lx 0x%lx):stub.\n", dwParam1, dwParam2);
741 FIXME (shell,"(\"%s\" \"%s\"):stub.\n", (LPSTR)dwParam1, (LPSTR)dwParam2);
743 return 0;
747 /*************************************************************************
748 * SignalFileOpen [SHELL32.103]
750 * NOTES
751 * exported by ordinal
753 DWORD WINAPI
754 SignalFileOpen (DWORD dwParam1)
756 FIXME (shell,"(0x%08lx):stub.\n", dwParam1);
758 return 0;
761 /*************************************************************************
762 * SHAddToRecentDocs [SHELL32.234]
764 * PARAMETERS
765 * uFlags [IN] SHARD_PATH or SHARD_PIDL
766 * pv [IN] string or pidl, NULL clears the list
768 * NOTES
769 * exported by name
771 DWORD WINAPI SHAddToRecentDocs32 (UINT32 uFlags,LPCVOID pv)
772 { if (SHARD_PIDL==uFlags)
773 { FIXME (shell,"(0x%08x,pidl=%p):stub.\n", uFlags,pv);
775 else
776 { FIXME (shell,"(0x%08x,%s):stub.\n", uFlags,(char*)pv);
778 return 0;
781 /*************************************************************************
782 * SHFileOperation [SHELL32.242]
784 * NOTES
785 * exported by name
787 DWORD WINAPI SHFileOperation32 (
788 LPSHFILEOPSTRUCT32A lpFileOp)
789 { FIXME (shell,"(%p):stub.\n", lpFileOp);
790 return 1;
793 /*************************************************************************
794 * SHChangeNotify [SHELL32.239]
796 * NOTES
797 * exported by name
799 DWORD WINAPI SHChangeNotify32 (
800 INT32 wEventId, /* [IN] flags that specifies the event*/
801 UINT32 uFlags, /* [IN] the meaning of dwItem[1|2]*/
802 LPCVOID dwItem1,
803 LPCVOID dwItem2)
804 { FIXME (shell,"(0x%08x,0x%08ux,%p,%p):stub.\n", wEventId,uFlags,dwItem1,dwItem2);
805 return 0;
807 /*************************************************************************
808 * SHCreateShellFolderViewEx [SHELL32.174]
810 * NOTES
811 * see IShellFolder::CreateViewObject
813 HRESULT WINAPI SHCreateShellFolderViewEx32(
814 LPSHELLVIEWDATA psvcbi, /*[in ] shelltemplate struct*/
815 LPVOID* ppv) /*[out] IShellView pointer*/
816 { FIXME (shell,"(%p,%p):stub.\n", psvcbi,ppv);
817 return 0;
819 /*************************************************************************
820 * SHFind_InitMenuPopup [SHELL32.149]
822 * NOTES
823 * Registers the menu behind the "Start" button
825 * PARAMETERS
826 * hMenu [in] handel of menu previously created
827 * hWndParent [in] parent window
828 * w [in] no pointer
829 * x [in] no pointer
831 HRESULT WINAPI SHFind_InitMenuPopup (HMENU32 hMenu, HWND32 hWndParent, DWORD w, DWORD x)
832 { FIXME(shell,"hmenu=0x%08x hwnd=0x%08x 0x%08lx 0x%08lx stub\n",
833 hMenu,hWndParent,w,x);
834 return 0;
836 /*************************************************************************
837 * FileMenu_InitMenuPopup [SHELL32.109]
840 HRESULT WINAPI FileMenu_InitMenuPopup (DWORD hmenu)
841 { FIXME(shell,"hmenu=0x%lx stub\n",hmenu);
842 return 0;
844 /*************************************************************************
845 * FileMenu_Create [SHELL32.114]
847 * w retval from LoadBitmapA
851 HRESULT WINAPI FileMenu_Create (DWORD u, DWORD v, DWORD w, DWORD x, DWORD z)
852 { FIXME(shell,"0x%08lx 0x%08lx hbmp=0x%lx 0x%08lx 0x%08lx stub\n",u,v,w,x,z);
853 return 0;
855 /*************************************************************************
856 * FileMenu_TrackPopupMenuEx [SHELL32.116]
858 * PARAMETERS
859 * uFlags [in] according to TrackPopupMenuEx
860 * posX [in]
861 * posY [in]
862 * hWndParent [in]
863 * z could be rect (trace) or TPMPARAMS (TrackPopupMenuEx)
865 HRESULT WINAPI FileMenu_TrackPopupMenuEx (DWORD t, DWORD uFlags, DWORD posX, DWORD posY, HWND32 hWndParent, DWORD z)
866 { FIXME(shell,"0x%lx flags=0x%lx posx=0x%lx posy=0x%lx hwndp=0x%x 0x%lx stub\n",
867 t,uFlags,posX,posY, hWndParent,z);
868 return 0;
870 /*************************************************************************
871 * SHWinHelp [SHELL32.127]
874 HRESULT WINAPI SHWinHelp (DWORD v, DWORD w, DWORD x, DWORD z)
875 { FIXME(shell,"0x%08lx 0x%08lx 0x%08lx 0x%08lx stub\n",v,w,x,z);
876 return 0;
878 /*************************************************************************
879 * SHRunConrolPanel [SHELL32.161]
882 HRESULT WINAPI SHRunConrolPanel (DWORD x, DWORD z)
883 { FIXME(shell,"0x%08lx 0x%08lx stub\n",x,z);
884 return 0;
886 /*************************************************************************
887 * ShellExecuteEx [SHELL32.291]
890 BOOL32 WINAPI ShellExecuteEx32A (LPSHELLEXECUTEINFO32A sei)
891 { CHAR szTemp[MAX_PATH];
893 FIXME(shell,"(%p): stub\n",sei);
895 if (sei->fMask & SEE_MASK_IDLIST)
896 { SHGetPathFromIDList32A (sei->lpIDList,szTemp);
897 TRACE (shell,"-- idlist=%p (%s)\n", sei->lpIDList, szTemp);
900 if (sei->fMask & SEE_MASK_CLASSNAME)
901 { TRACE (shell,"-- classname= %s\n", sei->lpClass);
904 if (sei->lpVerb)
905 { TRACE (shell,"-- action=%s\n", sei->lpVerb);
908 return 0;
910 /*************************************************************************
911 * SHSetInstanceExplorer [SHELL32.176]
914 HRESULT WINAPI SHSetInstanceExplorer (DWORD u)
915 { FIXME(shell,"0x%08lx stub\n",u);
916 return 0;
918 /*************************************************************************
919 * SHGetInstanceExplorer [SHELL32.256]
921 * NOTES
922 * exported by name
924 HRESULT WINAPI SHGetInstanceExplorer (DWORD u)
925 { FIXME(shell,"0x%08lx stub\n",u);
926 return 0;
928 /*************************************************************************
929 * SHFreeUnusedLibraries [SHELL32.123]
931 * NOTES
932 * exported by name
934 HRESULT WINAPI SHFreeUnusedLibraries (DWORD u)
935 { FIXME(shell,"0x%08lx stub\n",u);
936 return 0;
938 /*************************************************************************
939 * DAD_ShowDragImage [SHELL32.137]
941 * NOTES
942 * exported by name
944 HRESULT WINAPI DAD_ShowDragImage (DWORD u)
945 { FIXME(shell,"0x%08lx stub\n",u);
946 return 0;
948 /*************************************************************************
949 * FileMenu_Destroy [SHELL32.118]
951 * NOTES
952 * exported by name
954 HRESULT WINAPI FileMenu_Destroy (DWORD u)
955 { FIXME(shell,"0x%08lx stub\n",u);
956 return 0;
958 /*************************************************************************
959 * SHGetDataFromIDListA [SHELL32.247]
962 HRESULT WINAPI SHGetDataFromIDListA(DWORD u, DWORD v, DWORD w, DWORD x, DWORD y)
963 { FIXME(shell,"0x%04lx 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w,x,y);
964 return 0;
966 /*************************************************************************
967 * SHFileOperationA [SHELL32.243]
970 HRESULT WINAPI SHFileOperationA(DWORD x)
971 { FIXME(shell,"0x%08lx stub\n",x);
972 return 0;