Changeset 6650 for trunk/src/shell32/shellord.c
- Timestamp:
 - Sep 5, 2001, 3:54:53 PM (24 years ago)
 - File:
 - 
      
- 1 edited
 
- 
          
  trunk/src/shell32/shellord.c (modified) (27 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
trunk/src/shell32/shellord.c
r5618 r6650 1 /* $Id: shellord.c,v 1.4 2001-09-05 13:46:57 bird Exp $ */ 1 2 /* 2 3 * The parameters of many functions changes between different OS versions 3 4 * (NT uses Unicode strings, 95 uses ASCII strings) 4 * 5 * 5 6 * Copyright 1997 Marcus Meissner 6 7 * 1998 Jürgen Schmied … … 23 24 24 25 /************************************************************************* 25 * ParseFieldA [internal]26 * ParseFieldA [internal] 26 27 * 27 28 * copys a field from a ',' delimited string 28 * 29 * 29 30 * first field is nField = 1 30 31 */ 31 32 DWORD WINAPI ParseFieldA( 32 LPCSTR src,33 DWORD nField,34 LPSTR dst,35 DWORD len) 36 { 37 WARN("('%s',0x%08lx,%p,%ld) semi-stub.\n",src,nField,dst,len);38 39 if (!src || !src[0] || !dst || !len)40 return 0;41 42 /* skip n fields delimited by ',' */43 while (nField > 1)44 {45 if (*src=='\0') return FALSE;46 if (*(src++)==',') nField--;47 }48 49 /* copy part till the next ',' to dst */50 while ( *src!='\0' && *src!=',' && (len--)>0 ) *(dst++)=*(src++);51 52 /* finalize the string */53 *dst=0x0;54 55 return TRUE;56 } 57 58 /************************************************************************* 59 * ParseFieldW [internal]33 LPCSTR src, 34 DWORD nField, 35 LPSTR dst, 36 DWORD len) 37 { 38 WARN("('%s',0x%08lx,%p,%ld) semi-stub.\n",src,nField,dst,len); 39 40 if (!src || !src[0] || !dst || !len) 41 return 0; 42 43 /* skip n fields delimited by ',' */ 44 while (nField > 1) 45 { 46 if (*src=='\0') return FALSE; 47 if (*(src++)==',') nField--; 48 } 49 50 /* copy part till the next ',' to dst */ 51 while ( *src!='\0' && *src!=',' && (len--)>0 ) *(dst++)=*(src++); 52 53 /* finalize the string */ 54 *dst=0x0; 55 56 return TRUE; 57 } 58 59 /************************************************************************* 60 * ParseFieldW [internal] 60 61 * 61 62 * copys a field from a ',' delimited string 62 * 63 * 63 64 * first field is nField = 1 64 65 */ 65 DWORD WINAPI ParseFieldW(LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len) 66 { 67 FIXME("('%s',0x%08lx,%p,%ld) stub.\n",68 debugstr_w(src), nField, dst, len);69 return FALSE;70 } 71 72 /************************************************************************* 73 * ParseFieldAW [SHELL32.58]74 */ 75 DWORD WINAPI ParseFieldAW(LPCVOID src, DWORD nField, LPVOID dst, DWORD len) 76 { 77 if (SHELL_OsIsUnicode())78 return ParseFieldW(src, nField, dst, len);79 return ParseFieldA(src, nField, dst, len);80 } 81 82 /************************************************************************* 83 * GetFileNameFromBrowse [SHELL32.63]84 * 66 DWORD WINAPI ParseFieldW(LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len) 67 { 68 FIXME("('%s',0x%08lx,%p,%ld) stub.\n", 69 debugstr_w(src), nField, dst, len); 70 return FALSE; 71 } 72 73 /************************************************************************* 74 * ParseFieldAW [SHELL32.58] 75 */ 76 DWORD WINAPI ParseFieldAW(LPCVOID src, DWORD nField, LPVOID dst, DWORD len) 77 { 78 if (SHELL_OsIsUnicode()) 79 return ParseFieldW(src, nField, dst, len); 80 return ParseFieldA(src, nField, dst, len); 81 } 82 83 /************************************************************************* 84 * GetFileNameFromBrowse [SHELL32.63] 85 * 85 86 */ 86 87 BOOL WINAPI GetFileNameFromBrowse( 87 HWND hwndOwner,88 LPSTR lpstrFile,89 DWORD nMaxFile,90 LPCSTR lpstrInitialDir,91 LPCSTR lpstrDefExt,92 LPCSTR lpstrFilter,93 LPCSTR lpstrTitle)94 { 95 FIXME("(%04x,%s,%ld,%s,%s,%s,%s):stub.\n",96 hwndOwner, lpstrFile, nMaxFile, lpstrInitialDir, lpstrDefExt,97 lpstrFilter, lpstrTitle);88 HWND hwndOwner, 89 LPSTR lpstrFile, 90 DWORD nMaxFile, 91 LPCSTR lpstrInitialDir, 92 LPCSTR lpstrDefExt, 93 LPCSTR lpstrFilter, 94 LPCSTR lpstrTitle) 95 { 96 FIXME("(%04x,%s,%ld,%s,%s,%s,%s):stub.\n", 97 hwndOwner, lpstrFile, nMaxFile, lpstrInitialDir, lpstrDefExt, 98 lpstrFilter, lpstrTitle); 98 99 99 100 /* puts up a Open Dialog and requests input into targetbuf */ … … 104 105 105 106 /************************************************************************* 106 * SHGetSetSettings [SHELL32.68]107 * SHGetSetSettings [SHELL32.68] 107 108 */ 108 109 VOID WINAPI SHGetSetSettings(DWORD x, DWORD y, DWORD z) 109 110 { 110 FIXME("0x%08lx 0x%08lx 0x%08lx\n", x, y, z);111 } 112 113 /************************************************************************* 114 * SHGetSettings [SHELL32.@]115 * 111 FIXME("0x%08lx 0x%08lx 0x%08lx\n", x, y, z); 112 } 113 114 /************************************************************************* 115 * SHGetSettings [SHELL32.@] 116 * 116 117 * NOTES 117 118 * the registry path are for win98 (tested) … … 121 122 VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask) 122 123 { 123 HKEYhKey;124 DWORDdwData;125 DWORDdwDataSize = sizeof (DWORD);126 127 TRACE("(%p 0x%08lx)\n",lpsfs,dwMask);128 129 if (RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",130 0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0))131 return;132 133 if ( (SSF_SHOWEXTENSIONS & dwMask) && !RegQueryValueExA(hKey, "HideFileExt", 0, 0, (LPBYTE)&dwData, &dwDataSize))134 lpsfs->fShowExtensions = ((dwData == 0) ? 0 : 1);135 136 if ( (SSF_SHOWINFOTIP & dwMask) && !RegQueryValueExA(hKey, "ShowInfoTip", 0, 0, (LPBYTE)&dwData, &dwDataSize))137 lpsfs->fShowInfoTip = ((dwData == 0) ? 0 : 1);138 139 if ( (SSF_DONTPRETTYPATH & dwMask) && !RegQueryValueExA(hKey, "DontPrettyPath", 0, 0, (LPBYTE)&dwData, &dwDataSize))140 lpsfs->fDontPrettyPath = ((dwData == 0) ? 0 : 1);141 142 if ( (SSF_HIDEICONS & dwMask) && !RegQueryValueExA(hKey, "HideIcons", 0, 0, (LPBYTE)&dwData, &dwDataSize))143 lpsfs->fHideIcons = ((dwData == 0) ? 0 : 1);144 145 if ( (SSF_MAPNETDRVBUTTON & dwMask) && !RegQueryValueExA(hKey, "MapNetDrvBtn", 0, 0, (LPBYTE)&dwData, &dwDataSize))146 lpsfs->fMapNetDrvBtn = ((dwData == 0) ? 0 : 1);147 148 if ( (SSF_SHOWATTRIBCOL & dwMask) && !RegQueryValueExA(hKey, "ShowAttribCol", 0, 0, (LPBYTE)&dwData, &dwDataSize))149 lpsfs->fShowAttribCol = ((dwData == 0) ? 0 : 1);150 151 if (((SSF_SHOWALLOBJECTS | SSF_SHOWSYSFILES) & dwMask) && !RegQueryValueExA(hKey, "Hidden", 0, 0, (LPBYTE)&dwData, &dwDataSize))152 { if (dwData == 0)153 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 0;154 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 0;155 }156 else if (dwData == 1)157 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 1;158 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 0;159 }160 else if (dwData == 2)161 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 0;162 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 1;163 }164 }165 RegCloseKey (hKey);166 167 TRACE("-- 0x%04x\n", *(WORD*)lpsfs);168 } 169 170 /************************************************************************* 171 * SHShellFolderView_Message [SHELL32.73]124 HKEY hKey; 125 DWORD dwData; 126 DWORD dwDataSize = sizeof (DWORD); 127 128 TRACE("(%p 0x%08lx)\n",lpsfs,dwMask); 129 130 if (RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", 131 0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0)) 132 return; 133 134 if ( (SSF_SHOWEXTENSIONS & dwMask) && !RegQueryValueExA(hKey, "HideFileExt", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 135 lpsfs->fShowExtensions = ((dwData == 0) ? 0 : 1); 136 137 if ( (SSF_SHOWINFOTIP & dwMask) && !RegQueryValueExA(hKey, "ShowInfoTip", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 138 lpsfs->fShowInfoTip = ((dwData == 0) ? 0 : 1); 139 140 if ( (SSF_DONTPRETTYPATH & dwMask) && !RegQueryValueExA(hKey, "DontPrettyPath", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 141 lpsfs->fDontPrettyPath = ((dwData == 0) ? 0 : 1); 142 143 if ( (SSF_HIDEICONS & dwMask) && !RegQueryValueExA(hKey, "HideIcons", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 144 lpsfs->fHideIcons = ((dwData == 0) ? 0 : 1); 145 146 if ( (SSF_MAPNETDRVBUTTON & dwMask) && !RegQueryValueExA(hKey, "MapNetDrvBtn", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 147 lpsfs->fMapNetDrvBtn = ((dwData == 0) ? 0 : 1); 148 149 if ( (SSF_SHOWATTRIBCOL & dwMask) && !RegQueryValueExA(hKey, "ShowAttribCol", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 150 lpsfs->fShowAttribCol = ((dwData == 0) ? 0 : 1); 151 152 if (((SSF_SHOWALLOBJECTS | SSF_SHOWSYSFILES) & dwMask) && !RegQueryValueExA(hKey, "Hidden", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 153 { if (dwData == 0) 154 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 0; 155 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 0; 156 } 157 else if (dwData == 1) 158 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 1; 159 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 0; 160 } 161 else if (dwData == 2) 162 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 0; 163 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 1; 164 } 165 } 166 RegCloseKey (hKey); 167 168 TRACE("-- 0x%04x\n", *(WORD*)lpsfs); 169 } 170 171 /************************************************************************* 172 * SHShellFolderView_Message [SHELL32.73] 172 173 * 173 174 * PARAMETERS 174 * hwndCabinet defines the explorer cabinet window that contains the 175 * hwndCabinet defines the explorer cabinet window that contains the 175 176 * shellview you need to communicate with 176 177 * uMsg identifying the SFVM enum to perform … … 184 185 */ 185 186 int WINAPI SHShellFolderView_Message( 186 HWND hwndCabinet, 187 DWORD dwMessage,188 DWORD dwParam)189 { 190 FIXME("%04x %08lx %08lx stub\n",hwndCabinet, dwMessage, dwParam);191 return 0;192 } 193 194 /************************************************************************* 195 * RegisterShellHook [SHELL32.181]187 HWND hwndCabinet, 188 DWORD dwMessage, 189 DWORD dwParam) 190 { 191 FIXME("%04x %08lx %08lx stub\n",hwndCabinet, dwMessage, dwParam); 192 return 0; 193 } 194 195 /************************************************************************* 196 * RegisterShellHook [SHELL32.181] 196 197 * 197 198 * PARAMS 198 199 * hwnd [I] window handle 199 200 * y [I] flag ???? 200 * 201 * 201 202 * NOTES 202 203 * exported by ordinal 203 204 */ 204 205 BOOL WINAPI RegisterShellHook( 205 HWND hWnd,206 DWORD dwType)207 { 208 FIXME("(0x%08x,0x%08lx):stub.\n",hWnd, dwType);209 return TRUE;210 } 211 /************************************************************************* 212 * ShellMessageBoxW [SHELL32.182]206 HWND hWnd, 207 DWORD dwType) 208 { 209 FIXME("(0x%08x,0x%08lx):stub.\n",hWnd, dwType); 210 return TRUE; 211 } 212 /************************************************************************* 213 * ShellMessageBoxW [SHELL32.182] 213 214 * 214 215 * Format and output errormessage. 215 216 * 216 * idText resource ID of title or LPSTR217 * idTitle resource ID of title or LPSTR217 * idText resource ID of title or LPSTR 218 * idTitle resource ID of title or LPSTR 218 219 * 219 220 * NOTES … … 221 222 */ 222 223 int WINAPIV ShellMessageBoxW( 223 HINSTANCE hInstance,224 HWND hWnd,225 LPCWSTR lpText,226 LPCWSTR lpCaption,227 UINT uType,228 ...)229 { 230 WCHARszText[100],szTitle[100];231 LPCWSTR pszText = szText, pszTitle = szTitle, pszTemp;232 va_list args;233 intret;234 235 va_start(args, uType);236 /* wvsprintfA(buf,fmt, args); */237 238 TRACE("(%08lx,%08lx,%p,%p,%08x)\n",239 (DWORD)hInstance,(DWORD)hWnd,lpText,lpCaption,uType);240 241 if (!HIWORD(lpCaption))242 LoadStringW(hInstance, (DWORD)lpCaption, szTitle, sizeof(szTitle)/sizeof(szTitle[0]));243 else244 pszTitle = lpCaption;245 246 if (!HIWORD(lpText))247 LoadStringW(hInstance, (DWORD)lpText, szText, sizeof(szText)/sizeof(szText[0]));248 else249 pszText = lpText;250 251 FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, 252 pszText, 0, 0, (LPWSTR)&pszTemp, 0, &args);253 254 va_end(args);255 256 ret = MessageBoxW(hWnd,pszTemp,pszTitle,uType);257 LocalFree((HLOCAL)pszTemp);258 return ret;259 } 260 261 /************************************************************************* 262 * ShellMessageBoxA [SHELL32.183]224 HINSTANCE hInstance, 225 HWND hWnd, 226 LPCWSTR lpText, 227 LPCWSTR lpCaption, 228 UINT uType, 229 ...) 230 { 231 WCHAR szText[100],szTitle[100]; 232 LPCWSTR pszText = szText, pszTitle = szTitle, pszTemp; 233 va_list args; 234 int ret; 235 236 va_start(args, uType); 237 /* wvsprintfA(buf,fmt, args); */ 238 239 TRACE("(%08lx,%08lx,%p,%p,%08x)\n", 240 (DWORD)hInstance,(DWORD)hWnd,lpText,lpCaption,uType); 241 242 if (!HIWORD(lpCaption)) 243 LoadStringW(hInstance, (DWORD)lpCaption, szTitle, sizeof(szTitle)/sizeof(szTitle[0])); 244 else 245 pszTitle = lpCaption; 246 247 if (!HIWORD(lpText)) 248 LoadStringW(hInstance, (DWORD)lpText, szText, sizeof(szText)/sizeof(szText[0])); 249 else 250 pszText = lpText; 251 252 FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, 253 pszText, 0, 0, (LPWSTR)&pszTemp, 0, &args); 254 255 va_end(args); 256 257 ret = MessageBoxW(hWnd,pszTemp,pszTitle,uType); 258 LocalFree((HLOCAL)pszTemp); 259 return ret; 260 } 261 262 /************************************************************************* 263 * ShellMessageBoxA [SHELL32.183] 263 264 */ 264 265 int WINAPIV ShellMessageBoxA( 265 HINSTANCE hInstance,266 HWND hWnd,267 LPCSTR lpText,268 LPCSTR lpCaption,269 UINT uType,270 ...)271 { 272 charszText[100],szTitle[100];273 LPCSTR pszText = szText, pszTitle = szTitle, pszTemp;274 va_list args;275 intret;276 277 va_start(args, uType);278 /* wvsprintfA(buf,fmt, args); */279 280 TRACE("(%08lx,%08lx,%p,%p,%08x)\n",281 (DWORD)hInstance,(DWORD)hWnd,lpText,lpCaption,uType);282 283 if (!HIWORD(lpCaption))284 LoadStringA(hInstance, (DWORD)lpCaption, szTitle, sizeof(szTitle));285 else286 pszTitle = lpCaption;287 288 if (!HIWORD(lpText))289 LoadStringA(hInstance, (DWORD)lpText, szText, sizeof(szText));290 else291 pszText = lpText;292 293 FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, 294 pszText, 0, 0, (LPSTR)&pszTemp, 0, &args);295 296 va_end(args);297 298 ret = MessageBoxA(hWnd,pszTemp,pszTitle,uType);299 LocalFree((HLOCAL)pszTemp);300 return ret;301 } 302 303 /************************************************************************* 304 * SHFree [SHELL32.195]266 HINSTANCE hInstance, 267 HWND hWnd, 268 LPCSTR lpText, 269 LPCSTR lpCaption, 270 UINT uType, 271 ...) 272 { 273 char szText[100],szTitle[100]; 274 LPCSTR pszText = szText, pszTitle = szTitle, pszTemp; 275 va_list args; 276 int ret; 277 278 va_start(args, uType); 279 /* wvsprintfA(buf,fmt, args); */ 280 281 TRACE("(%08lx,%08lx,%p,%p,%08x)\n", 282 (DWORD)hInstance,(DWORD)hWnd,lpText,lpCaption,uType); 283 284 if (!HIWORD(lpCaption)) 285 LoadStringA(hInstance, (DWORD)lpCaption, szTitle, sizeof(szTitle)); 286 else 287 pszTitle = lpCaption; 288 289 if (!HIWORD(lpText)) 290 LoadStringA(hInstance, (DWORD)lpText, szText, sizeof(szText)); 291 else 292 pszText = lpText; 293 294 FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, 295 pszText, 0, 0, (LPSTR)&pszTemp, 0, &args); 296 297 va_end(args); 298 299 ret = MessageBoxA(hWnd,pszTemp,pszTitle,uType); 300 LocalFree((HLOCAL)pszTemp); 301 return ret; 302 } 303 304 /************************************************************************* 305 * SHFree [SHELL32.195] 305 306 * 306 307 * NOTES … … 309 310 */ 310 311 #define MEM_DEBUG 0 311 void WINAPI SHFree(LPVOID x) 312 void WINAPI SHFree(LPVOID x) 312 313 { 313 314 #if MEM_DEBUG 314 WORD len = *(LPWORD)((LPBYTE)x-2);315 316 if ( *(LPWORD)((LPBYTE)x+len) != 0x7384)317 ERR("MAGIC2!\n");318 319 if ( (*(LPWORD)((LPBYTE)x-4)) != 0x8271)320 ERR("MAGIC1!\n");321 else322 memset((LPBYTE)x-4, 0xde, len+6);323 324 TRACE("%p len=%u\n",x, len);325 326 x = (LPBYTE) x - 4;315 WORD len = *(LPWORD)((LPBYTE)x-2); 316 317 if ( *(LPWORD)((LPBYTE)x+len) != 0x7384) 318 ERR("MAGIC2!\n"); 319 320 if ( (*(LPWORD)((LPBYTE)x-4)) != 0x8271) 321 ERR("MAGIC1!\n"); 322 else 323 memset((LPBYTE)x-4, 0xde, len+6); 324 325 TRACE("%p len=%u\n",x, len); 326 327 x = (LPBYTE) x - 4; 327 328 #else 328 TRACE("%p\n",x);329 TRACE("%p\n",x); 329 330 #endif 330 HeapFree(GetProcessHeap(), 0, x);331 } 332 333 /************************************************************************* 334 * SHAlloc [SHELL32.196]331 HeapFree(GetProcessHeap(), 0, x); 332 } 333 334 /************************************************************************* 335 * SHAlloc [SHELL32.196] 335 336 * 336 337 * NOTES … … 338 339 * exported by ordinal 339 340 */ 340 LPVOID WINAPI SHAlloc(DWORD len) 341 { 342 LPBYTE ret;341 LPVOID WINAPI SHAlloc(DWORD len) 342 { 343 LPBYTE ret; 343 344 344 345 #if MEM_DEBUG 345 ret = (LPVOID) HeapAlloc(GetProcessHeap(),0,len+6);346 ret = (LPVOID) HeapAlloc(GetProcessHeap(),0,len+6); 346 347 #else 347 ret = (LPVOID) HeapAlloc(GetProcessHeap(),0,len);348 ret = (LPVOID) HeapAlloc(GetProcessHeap(),0,len); 348 349 #endif 349 350 350 351 #if MEM_DEBUG 351 *(LPWORD)(ret) = 0x8271;352 *(LPWORD)(ret+2) = (WORD)len;353 *(LPWORD)(ret+4+len) = 0x7384;354 ret += 4;355 memset(ret, 0xdf, len);352 *(LPWORD)(ret) = 0x8271; 353 *(LPWORD)(ret+2) = (WORD)len; 354 *(LPWORD)(ret+4+len) = 0x7384; 355 ret += 4; 356 memset(ret, 0xdf, len); 356 357 #endif 357 TRACE("%lu bytes at %p\n",len, ret);358 return (LPVOID)ret;359 } 360 361 /************************************************************************* 362 * SHRegisterDragDrop [SHELL32.86]358 TRACE("%lu bytes at %p\n",len, ret); 359 return (LPVOID)ret; 360 } 361 362 /************************************************************************* 363 * SHRegisterDragDrop [SHELL32.86] 363 364 * 364 365 * NOTES … … 366 367 */ 367 368 HRESULT WINAPI SHRegisterDragDrop( 368 HWND hWnd,369 LPDROPTARGET pDropTarget)370 { 371 FIXME("(0x%08x,%p):stub.\n", hWnd, pDropTarget);372 if (GetShellOle()) return pRegisterDragDrop(hWnd, pDropTarget);369 HWND hWnd, 370 LPDROPTARGET pDropTarget) 371 { 372 FIXME("(0x%08x,%p):stub.\n", hWnd, pDropTarget); 373 if (GetShellOle()) return pRegisterDragDrop(hWnd, pDropTarget); 373 374 return 0; 374 375 } 375 376 376 377 /************************************************************************* 377 * SHRevokeDragDrop [SHELL32.87]378 * SHRevokeDragDrop [SHELL32.87] 378 379 * 379 380 * NOTES … … 387 388 388 389 /************************************************************************* 389 * SHDoDragDrop [SHELL32.88]390 * SHDoDragDrop [SHELL32.88] 390 391 * 391 392 * NOTES … … 393 394 */ 394 395 HRESULT WINAPI SHDoDragDrop( 395 HWND hWnd,396 LPDATAOBJECT lpDataObject,397 LPDROPSOURCE lpDropSource,398 DWORD dwOKEffect,399 LPDWORD pdwEffect)396 HWND hWnd, 397 LPDATAOBJECT lpDataObject, 398 LPDROPSOURCE lpDropSource, 399 DWORD dwOKEffect, 400 LPDWORD pdwEffect) 400 401 { 401 402 FIXME("(0x%04x %p %p 0x%08lx %p):stub.\n", … … 405 406 406 407 /************************************************************************* 407 * ArrangeWindows [SHELL32.184]408 * 408 * ArrangeWindows [SHELL32.184] 409 * 409 410 */ 410 411 WORD WINAPI ArrangeWindows( 411 HWND hwndParent,412 DWORD dwReserved,413 LPCRECT lpRect,414 WORD cKids,415 CONST HWND * lpKids)412 HWND hwndParent, 413 DWORD dwReserved, 414 LPCRECT lpRect, 415 WORD cKids, 416 CONST HWND * lpKids) 416 417 { 417 418 FIXME("(0x%08x 0x%08lx %p 0x%04x %p):stub.\n", 418 hwndParent, dwReserved, lpRect, cKids, lpKids);419 return 0; 420 } 421 422 /************************************************************************* 423 * SignalFileOpen [SHELL32.103]419 hwndParent, dwReserved, lpRect, cKids, lpKids); 420 return 0; 421 } 422 423 /************************************************************************* 424 * SignalFileOpen [SHELL32.103] 424 425 * 425 426 * NOTES … … 435 436 436 437 /************************************************************************* 437 * SHAddToRecentDocs [SHELL32.234]438 * SHAddToRecentDocs [SHELL32.234] 438 439 * 439 440 * PARAMETERS … … 444 445 * exported by name 445 446 */ 446 DWORD WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv) 447 DWORD WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv) 447 448 { if (SHARD_PIDL==uFlags) 448 449 { FIXME("(0x%08x,pidl=%p):stub.\n", uFlags,pv); 449 }450 else451 { FIXME("(0x%08x,%s):stub.\n", uFlags,(char*)pv);452 }450 } 451 else 452 { FIXME("(0x%08x,%s):stub.\n", uFlags,(char*)pv); 453 } 453 454 return 0; 454 455 } 455 456 /************************************************************************* 456 * SHCreateShellFolderViewEx [SHELL32.174]457 * SHCreateShellFolderViewEx [SHELL32.174] 457 458 * 458 459 * NOTES … … 460 461 */ 461 462 HRESULT WINAPI SHCreateShellFolderViewEx( 462 LPCSHELLFOLDERVIEWINFO psvcbi, /* [in] shelltemplate struct */463 LPSHELLVIEW* ppv) /* [out] IShellView pointer */464 { 465 IShellView * psf;466 HRESULT hRes;467 468 TRACE("sf=%p pidl=%p cb=%p mode=0x%08x parm=0x%08lx\n", 469 psvcbi->pshf, psvcbi->pidlFolder, psvcbi->lpfnCallback,470 psvcbi->uViewMode, psvcbi->dwUser);471 472 psf = IShellView_Constructor(psvcbi->pshf);473 474 if (!psf)475 return E_OUTOFMEMORY;476 477 IShellView_AddRef(psf);478 hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppv);479 IShellView_Release(psf);480 481 return hRes;482 } 483 /************************************************************************* 484 * SHWinHelp [SHELL32.127]463 LPCSHELLFOLDERVIEWINFO psvcbi, /* [in] shelltemplate struct */ 464 LPSHELLVIEW* ppv) /* [out] IShellView pointer */ 465 { 466 IShellView * psf; 467 HRESULT hRes; 468 469 TRACE("sf=%p pidl=%p cb=%p mode=0x%08x parm=0x%08lx\n", 470 psvcbi->pshf, psvcbi->pidlFolder, psvcbi->lpfnCallback, 471 psvcbi->uViewMode, psvcbi->dwUser); 472 473 psf = IShellView_Constructor(psvcbi->pshf); 474 475 if (!psf) 476 return E_OUTOFMEMORY; 477 478 IShellView_AddRef(psf); 479 hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppv); 480 IShellView_Release(psf); 481 482 return hRes; 483 } 484 /************************************************************************* 485 * SHWinHelp [SHELL32.127] 485 486 * 486 487 */ 487 488 HRESULT WINAPI SHWinHelp (DWORD v, DWORD w, DWORD x, DWORD z) 488 { FIXME("0x%08lx 0x%08lx 0x%08lx 0x%08lx stub\n",v,w,x,z);489 return 0;489 { FIXME("0x%08lx 0x%08lx 0x%08lx 0x%08lx stub\n",v,w,x,z); 490 return 0; 490 491 } 491 492 /************************************************************************* … … 494 495 */ 495 496 HRESULT WINAPI SHRunControlPanel (DWORD x, DWORD z) 496 { FIXME("0x%08lx 0x%08lx stub\n",x,z);497 return 0;498 } 499 /************************************************************************* 500 * ShellExecuteEx [SHELL32.291]497 { FIXME("0x%08lx 0x%08lx stub\n",x,z); 498 return 0; 499 } 500 /************************************************************************* 501 * ShellExecuteEx [SHELL32.291] 501 502 * 502 503 */ 503 504 BOOL WINAPI ShellExecuteExAW (LPVOID sei) 504 { if (SHELL_OsIsUnicode())505 return ShellExecuteExW (sei);506 return ShellExecuteExA (sei);507 } 508 /************************************************************************* 509 * ShellExecuteExA [SHELL32.292]505 { if (SHELL_OsIsUnicode()) 506 return ShellExecuteExW (sei); 507 return ShellExecuteExA (sei); 508 } 509 /************************************************************************* 510 * ShellExecuteExA [SHELL32.292] 510 511 * 511 512 * placeholder in the commandline: 512 * %1 file513 * %2 printer514 * %3 driver515 * %4 port516 * %I adress of a global item ID (explorer switch /idlist)517 * %L ??? path/url/current file ???518 * %S ???519 * %* all following parameters (see batfile)513 * %1 file 514 * %2 printer 515 * %3 driver 516 * %4 port 517 * %I adress of a global item ID (explorer switch /idlist) 518 * %L ??? path/url/current file ??? 519 * %S ??? 520 * %* all following parameters (see batfile) 520 521 */ 521 522 BOOL WINAPI ShellExecuteExA (LPSHELLEXECUTEINFOA sei) 522 { CHAR szApplicationName[MAX_PATH],szCommandline[MAX_PATH],szPidl[20];523 LPSTR pos;524 int gap, len;525 STARTUPINFOA startup;526 PROCESS_INFORMATION info;527 528 WARN("mask=0x%08lx hwnd=0x%04x verb=%s file=%s parm=%s dir=%s show=0x%08x class=%s incomplete\n",529 sei->fMask, sei->hwnd, sei->lpVerb, sei->lpFile,530 sei->lpParameters, sei->lpDirectory, sei->nShow, 531 (sei->fMask & SEE_MASK_CLASSNAME) ? sei->lpClass : "not used");532 533 ZeroMemory(szApplicationName,MAX_PATH);534 if (sei->lpFile)535 strcpy(szApplicationName, sei->lpFile);536 537 ZeroMemory(szCommandline,MAX_PATH);538 if (sei->lpParameters)539 strcpy(szCommandline, sei->lpParameters);540 541 if (sei->fMask & (SEE_MASK_CLASSKEY | SEE_MASK_INVOKEIDLIST | SEE_MASK_ICON | SEE_MASK_HOTKEY |542 SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT |543 SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI | SEE_MASK_UNICODE | 544 SEE_MASK_NO_CONSOLE | SEE_MASK_ASYNCOK | SEE_MASK_HMONITOR ))545 {546 FIXME("flags ignored: 0x%08lx\n", sei->fMask);547 }548 549 /* launch a document by fileclass like 'Wordpad.Document.1' */550 if (sei->fMask & SEE_MASK_CLASSNAME)551 {552 /* the commandline contains 'c:\Path\wordpad.exe "%1"' */553 HCR_GetExecuteCommand(sei->lpClass, (sei->lpVerb) ? sei->lpVerb : "open", szCommandline, 256);554 /* fixme: get the extension of lpFile, check if it fits to the lpClass */555 TRACE("SEE_MASK_CLASSNAME->'%s'\n", szCommandline);556 }557 558 /* process the IDList */559 if ( (sei->fMask & SEE_MASK_INVOKEIDLIST) == SEE_MASK_INVOKEIDLIST) /*0x0c*/560 {561 SHGetPathFromIDListA (sei->lpIDList,szApplicationName);562 TRACE("-- idlist=%p (%s)\n", sei->lpIDList, szApplicationName);563 }564 else565 {566 if (sei->fMask & SEE_MASK_IDLIST )567 {568 pos = strstr(szCommandline, "%I");569 if (pos)570 {571 LPVOID pv;572 HGLOBAL hmem = SHAllocShared ( sei->lpIDList, ILGetSize(sei->lpIDList), 0);573 pv = SHLockShared(hmem,0);574 sprintf(szPidl,":%p",pv );575 SHUnlockShared(pv);576 577 gap = strlen(szPidl);578 len = strlen(pos)-2;579 memmove(pos+gap,pos+2,len);580 memcpy(pos,szPidl,gap);581 582 }583 }584 }585 586 TRACE("execute:'%s','%s'\n",szApplicationName, szCommandline);587 588 strcat(szApplicationName, " ");589 strcat(szApplicationName, szCommandline);590 591 ZeroMemory(&startup,sizeof(STARTUPINFOA));592 startup.cb = sizeof(STARTUPINFOA);593 594 if (! CreateProcessA(NULL, szApplicationName,595 NULL, NULL, FALSE, 0, 596 NULL, NULL, &startup, &info))597 {598 sei->hInstApp = GetLastError();599 return FALSE;600 }523 { CHAR szApplicationName[MAX_PATH],szCommandline[MAX_PATH],szPidl[20]; 524 LPSTR pos; 525 int gap, len; 526 STARTUPINFOA startup; 527 PROCESS_INFORMATION info; 528 529 WARN("mask=0x%08lx hwnd=0x%04x verb=%s file=%s parm=%s dir=%s show=0x%08x class=%s incomplete\n", 530 sei->fMask, sei->hwnd, sei->lpVerb, sei->lpFile, 531 sei->lpParameters, sei->lpDirectory, sei->nShow, 532 (sei->fMask & SEE_MASK_CLASSNAME) ? sei->lpClass : "not used"); 533 534 ZeroMemory(szApplicationName,MAX_PATH); 535 if (sei->lpFile) 536 strcpy(szApplicationName, sei->lpFile); 537 538 ZeroMemory(szCommandline,MAX_PATH); 539 if (sei->lpParameters) 540 strcpy(szCommandline, sei->lpParameters); 541 542 if (sei->fMask & (SEE_MASK_CLASSKEY | SEE_MASK_INVOKEIDLIST | SEE_MASK_ICON | SEE_MASK_HOTKEY | 543 SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT | 544 SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI | SEE_MASK_UNICODE | 545 SEE_MASK_NO_CONSOLE | SEE_MASK_ASYNCOK | SEE_MASK_HMONITOR )) 546 { 547 FIXME("flags ignored: 0x%08lx\n", sei->fMask); 548 } 549 550 /* launch a document by fileclass like 'Wordpad.Document.1' */ 551 if (sei->fMask & SEE_MASK_CLASSNAME) 552 { 553 /* the commandline contains 'c:\Path\wordpad.exe "%1"' */ 554 HCR_GetExecuteCommand(sei->lpClass, (sei->lpVerb) ? sei->lpVerb : "open", szCommandline, 256); 555 /* fixme: get the extension of lpFile, check if it fits to the lpClass */ 556 TRACE("SEE_MASK_CLASSNAME->'%s'\n", szCommandline); 557 } 558 559 /* process the IDList */ 560 if ( (sei->fMask & SEE_MASK_INVOKEIDLIST) == SEE_MASK_INVOKEIDLIST) /*0x0c*/ 561 { 562 SHGetPathFromIDListA (sei->lpIDList,szApplicationName); 563 TRACE("-- idlist=%p (%s)\n", sei->lpIDList, szApplicationName); 564 } 565 else 566 { 567 if (sei->fMask & SEE_MASK_IDLIST ) 568 { 569 pos = strstr(szCommandline, "%I"); 570 if (pos) 571 { 572 LPVOID pv; 573 HGLOBAL hmem = SHAllocShared ( sei->lpIDList, ILGetSize(sei->lpIDList), 0); 574 pv = SHLockShared(hmem,0); 575 sprintf(szPidl,":%p",pv ); 576 SHUnlockShared(pv); 577 578 gap = strlen(szPidl); 579 len = strlen(pos)-2; 580 memmove(pos+gap,pos+2,len); 581 memcpy(pos,szPidl,gap); 582 583 } 584 } 585 } 586 587 TRACE("execute:'%s','%s'\n",szApplicationName, szCommandline); 588 589 strcat(szApplicationName, " "); 590 strcat(szApplicationName, szCommandline); 591 592 ZeroMemory(&startup,sizeof(STARTUPINFOA)); 593 startup.cb = sizeof(STARTUPINFOA); 594 595 if (! CreateProcessA(NULL, szApplicationName, 596 NULL, NULL, FALSE, 0, 597 NULL, NULL, &startup, &info)) 598 { 599 sei->hInstApp = GetLastError(); 600 return FALSE; 601 } 601 602 602 603 sei->hInstApp = 33; 603 604 /* Give 30 seconds to the app to come up */605 if ( WaitForInputIdle ( info.hProcess, 30000 ) == 0xFFFFFFFF )606 ERR("WaitForInputIdle failed: Error %ld\n", GetLastError() );607 608 if(sei->fMask & SEE_MASK_NOCLOSEPROCESS)609 sei->hProcess = info.hProcess; 604 605 /* Give 30 seconds to the app to come up */ 606 if ( WaitForInputIdle ( info.hProcess, 30000 ) == 0xFFFFFFFF ) 607 ERR("WaitForInputIdle failed: Error %ld\n", GetLastError() ); 608 609 if(sei->fMask & SEE_MASK_NOCLOSEPROCESS) 610 sei->hProcess = info.hProcess; 610 611 else 611 612 CloseHandle( info.hProcess ); 612 613 CloseHandle( info.hThread ); 613 return TRUE;614 } 615 /************************************************************************* 616 * ShellExecuteExW [SHELL32.293]614 return TRUE; 615 } 616 /************************************************************************* 617 * ShellExecuteExW [SHELL32.293] 617 618 * 618 619 */ 619 620 BOOL WINAPI ShellExecuteExW (LPSHELLEXECUTEINFOW sei) 620 { SHELLEXECUTEINFOA seiA;621 DWORD ret;622 623 TRACE("%p\n", sei);624 625 memcpy(&seiA, sei, sizeof(SHELLEXECUTEINFOA));626 621 { SHELLEXECUTEINFOA seiA; 622 DWORD ret; 623 624 TRACE("%p\n", sei); 625 626 memcpy(&seiA, sei, sizeof(SHELLEXECUTEINFOA)); 627 627 628 if (sei->lpVerb) 628 seiA.lpVerb = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpVerb);629 seiA.lpVerb = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpVerb); 629 630 630 631 if (sei->lpFile) 631 seiA.lpFile = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpFile);632 seiA.lpFile = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpFile); 632 633 633 634 if (sei->lpParameters) 634 seiA.lpParameters = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpParameters);635 636 if (sei->lpDirectory)637 seiA.lpDirectory = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpDirectory);635 seiA.lpParameters = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpParameters); 636 637 if (sei->lpDirectory) 638 seiA.lpDirectory = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpDirectory); 638 639 639 640 if ((sei->fMask & SEE_MASK_CLASSNAME) && sei->lpClass) 640 seiA.lpClass = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpClass);641 else642 seiA.lpClass = NULL;643 644 ret = ShellExecuteExA(&seiA);645 646 if (seiA.lpVerb) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpVerb );647 if (seiA.lpFile)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpFile );648 if (seiA.lpParameters)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpParameters );649 if (seiA.lpDirectory)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpDirectory );650 if (seiA.lpClass)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpClass );651 652 return ret;641 seiA.lpClass = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpClass); 642 else 643 seiA.lpClass = NULL; 644 645 ret = ShellExecuteExA(&seiA); 646 647 if (seiA.lpVerb) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpVerb ); 648 if (seiA.lpFile) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpFile ); 649 if (seiA.lpParameters) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpParameters ); 650 if (seiA.lpDirectory) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpDirectory ); 651 if (seiA.lpClass) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpClass ); 652 653 return ret; 653 654 } 654 655 655 656 static LPUNKNOWN SHELL32_IExplorerInterface=0; 656 657 /************************************************************************* 657 * SHSetInstanceExplorer [SHELL32.176]658 * SHSetInstanceExplorer [SHELL32.176] 658 659 * 659 660 * NOTES … … 661 662 */ 662 663 HRESULT WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown) 663 { TRACE("%p\n", lpUnknown);664 SHELL32_IExplorerInterface = lpUnknown;665 return (HRESULT) lpUnknown;666 } 667 /************************************************************************* 668 * SHGetInstanceExplorer [SHELL32.256]664 { TRACE("%p\n", lpUnknown); 665 SHELL32_IExplorerInterface = lpUnknown; 666 return (HRESULT) lpUnknown; 667 } 668 /************************************************************************* 669 * SHGetInstanceExplorer [SHELL32.256] 669 670 * 670 671 * NOTES … … 672 673 */ 673 674 HRESULT WINAPI SHGetInstanceExplorer (LPUNKNOWN * lpUnknown) 674 { TRACE("%p\n", lpUnknown);675 676 *lpUnknown = SHELL32_IExplorerInterface;677 678 if (!SHELL32_IExplorerInterface)679 return E_FAIL;680 681 IUnknown_AddRef(SHELL32_IExplorerInterface);682 return NOERROR;683 } 684 /************************************************************************* 685 * SHFreeUnusedLibraries [SHELL32.123]675 { TRACE("%p\n", lpUnknown); 676 677 *lpUnknown = SHELL32_IExplorerInterface; 678 679 if (!SHELL32_IExplorerInterface) 680 return E_FAIL; 681 682 IUnknown_AddRef(SHELL32_IExplorerInterface); 683 return NOERROR; 684 } 685 /************************************************************************* 686 * SHFreeUnusedLibraries [SHELL32.123] 686 687 * 687 688 * NOTES … … 690 691 void WINAPI SHFreeUnusedLibraries (void) 691 692 { 692 FIXME("stub\n");693 } 694 /************************************************************************* 695 * DAD_SetDragImage [SHELL32.136]693 FIXME("stub\n"); 694 } 695 /************************************************************************* 696 * DAD_SetDragImage [SHELL32.136] 696 697 * 697 698 * NOTES … … 699 700 */ 700 701 BOOL WINAPI DAD_SetDragImage( 701 HIMAGELIST himlTrack,702 LPPOINT lppt)703 { 704 FIXME("%p %p stub\n",himlTrack, lppt);702 HIMAGELIST himlTrack, 703 LPPOINT lppt) 704 { 705 FIXME("%p %p stub\n",himlTrack, lppt); 705 706 return 0; 706 707 } 707 708 /************************************************************************* 708 * DAD_ShowDragImage [SHELL32.137]709 * DAD_ShowDragImage [SHELL32.137] 709 710 * 710 711 * NOTES … … 713 714 BOOL WINAPI DAD_ShowDragImage(BOOL bShow) 714 715 { 715 FIXME("0x%08x stub\n",bShow);716 return 0;717 } 718 /************************************************************************* 719 * ReadCabinetState [NT 4.0:SHELL32.651]716 FIXME("0x%08x stub\n",bShow); 717 return 0; 718 } 719 /************************************************************************* 720 * ReadCabinetState [NT 4.0:SHELL32.651] 720 721 * 721 722 */ 722 723 HRESULT WINAPI ReadCabinetState(DWORD u, DWORD v) 723 { FIXME("0x%04lx 0x%04lx stub\n",u,v);724 return 0;725 } 726 /************************************************************************* 727 * WriteCabinetState [NT 4.0:SHELL32.652]724 { FIXME("0x%04lx 0x%04lx stub\n",u,v); 725 return 0; 726 } 727 /************************************************************************* 728 * WriteCabinetState [NT 4.0:SHELL32.652] 728 729 * 729 730 */ 730 731 HRESULT WINAPI WriteCabinetState(DWORD u) 731 { FIXME("0x%04lx stub\n",u);732 return 0;733 } 734 /************************************************************************* 735 * FileIconInit [SHELL32.660]732 { FIXME("0x%04lx stub\n",u); 733 return 0; 734 } 735 /************************************************************************* 736 * FileIconInit [SHELL32.660] 736 737 * 737 738 */ 738 739 BOOL WINAPI FileIconInit(BOOL bFullInit) 739 { FIXME("(%s)\n", bFullInit ? "true" : "false");740 return 0;741 } 742 /************************************************************************* 743 * IsUserAdmin [NT 4.0:SHELL32.680]740 { FIXME("(%s)\n", bFullInit ? "true" : "false"); 741 return 0; 742 } 743 /************************************************************************* 744 * IsUserAdmin [NT 4.0:SHELL32.680] 744 745 * 745 746 */ 746 747 HRESULT WINAPI IsUserAdmin(void) 747 { FIXME("stub\n");748 return TRUE;749 } 750 751 /************************************************************************* 752 * SHAllocShared [SHELL32.520]748 { FIXME("stub\n"); 749 return TRUE; 750 } 751 752 /************************************************************************* 753 * SHAllocShared [SHELL32.520] 753 754 * 754 755 * NOTES … … 762 763 */ 763 764 HGLOBAL WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID) 764 { HGLOBAL hmem;765 LPVOID pmem;766 767 TRACE("ptr=%p size=0x%04lx procID=0x%04lx\n",psrc,size,procID);768 hmem = GlobalAlloc(GMEM_FIXED, size);769 if (!hmem)770 return 0;771 772 pmem = GlobalLock (hmem);773 774 if (! pmem)775 return 0;776 777 memcpy (pmem, psrc, size);778 GlobalUnlock(hmem); 779 return hmem;780 } 781 /************************************************************************* 782 * SHLockShared [SHELL32.521]765 { HGLOBAL hmem; 766 LPVOID pmem; 767 768 TRACE("ptr=%p size=0x%04lx procID=0x%04lx\n",psrc,size,procID); 769 hmem = GlobalAlloc(GMEM_FIXED, size); 770 if (!hmem) 771 return 0; 772 773 pmem = GlobalLock (hmem); 774 775 if (! pmem) 776 return 0; 777 778 memcpy (pmem, psrc, size); 779 GlobalUnlock(hmem); 780 return hmem; 781 } 782 /************************************************************************* 783 * SHLockShared [SHELL32.521] 783 784 * 784 785 * NOTES 785 786 * parameter1 is return value from SHAllocShared 786 787 * parameter2 is return value from GetCurrentProcessId 787 * the receiver of (WM_USER+2) trys to lock the HANDLE (?) 788 * the receiver of (WM_USER+2) trys to lock the HANDLE (?) 788 789 * the returnvalue seems to be a memoryadress 789 790 */ 790 791 LPVOID WINAPI SHLockShared(HANDLE hmem, DWORD procID) 791 { TRACE("handle=0x%04x procID=0x%04lx\n",hmem,procID);792 return GlobalLock(hmem);793 } 794 /************************************************************************* 795 * SHUnlockShared [SHELL32.522]792 { TRACE("handle=0x%04x procID=0x%04lx\n",hmem,procID); 793 return GlobalLock(hmem); 794 } 795 /************************************************************************* 796 * SHUnlockShared [SHELL32.522] 796 797 * 797 798 * NOTES … … 800 801 BOOL WINAPI SHUnlockShared(LPVOID pv) 801 802 { 802 TRACE("%p\n",pv);803 return GlobalUnlock((HANDLE)pv); 804 } 805 /************************************************************************* 806 * SHFreeShared [SHELL32.523]803 TRACE("%p\n",pv); 804 return GlobalUnlock((HANDLE)pv); 805 } 806 /************************************************************************* 807 * SHFreeShared [SHELL32.523] 807 808 * 808 809 * NOTES … … 811 812 */ 812 813 BOOL WINAPI SHFreeShared( 813 HANDLE hMem,814 DWORD pid)815 { 816 TRACE("handle=0x%04x 0x%04lx\n",hMem,pid);817 return GlobalFree(hMem);818 } 819 820 /************************************************************************* 821 * SetAppStartingCursor [SHELL32.99]814 HANDLE hMem, 815 DWORD pid) 816 { 817 TRACE("handle=0x%04x 0x%04lx\n",hMem,pid); 818 return GlobalFree(hMem); 819 } 820 821 /************************************************************************* 822 * SetAppStartingCursor [SHELL32.99] 822 823 */ 823 824 HRESULT WINAPI SetAppStartingCursor(HWND u, DWORD v) 824 { FIXME("hwnd=0x%04x 0x%04lx stub\n",u,v );825 return 0;826 } 827 /************************************************************************* 828 * SHLoadOLE [SHELL32.151]825 { FIXME("hwnd=0x%04x 0x%04lx stub\n",u,v ); 826 return 0; 827 } 828 /************************************************************************* 829 * SHLoadOLE [SHELL32.151] 829 830 * 830 831 */ 831 832 HRESULT WINAPI SHLoadOLE(DWORD u) 832 { FIXME("0x%04lx stub\n",u);833 return S_OK;834 } 835 /************************************************************************* 836 * DriveType [SHELL32.64]833 { FIXME("0x%04lx stub\n",u); 834 return S_OK; 835 } 836 /************************************************************************* 837 * DriveType [SHELL32.64] 837 838 * 838 839 */ 839 840 HRESULT WINAPI DriveType(DWORD u) 840 { FIXME("0x%04lx stub\n",u);841 return 0;842 } 843 /************************************************************************* 844 * SHAbortInvokeCommand [SHELL32.198]841 { FIXME("0x%04lx stub\n",u); 842 return 0; 843 } 844 /************************************************************************* 845 * SHAbortInvokeCommand [SHELL32.198] 845 846 * 846 847 */ 847 848 HRESULT WINAPI SHAbortInvokeCommand(void) 848 { FIXME("stub\n");849 return 1;850 } 851 /************************************************************************* 852 * SHOutOfMemoryMessageBox [SHELL32.126]849 { FIXME("stub\n"); 850 return 1; 851 } 852 /************************************************************************* 853 * SHOutOfMemoryMessageBox [SHELL32.126] 853 854 * 854 855 */ 855 856 int WINAPI SHOutOfMemoryMessageBox( 856 HWND hwndOwner,857 LPCSTR lpCaption,858 UINT uType)859 { 860 FIXME("0x%04x %s 0x%08x stub\n",hwndOwner, lpCaption, uType);861 return 0;862 } 863 /************************************************************************* 864 * SHFlushClipboard [SHELL32.121]857 HWND hwndOwner, 858 LPCSTR lpCaption, 859 UINT uType) 860 { 861 FIXME("0x%04x %s 0x%08x stub\n",hwndOwner, lpCaption, uType); 862 return 0; 863 } 864 /************************************************************************* 865 * SHFlushClipboard [SHELL32.121] 865 866 * 866 867 */ 867 868 HRESULT WINAPI SHFlushClipboard(void) 868 { FIXME("stub\n");869 return 1;870 } 871 872 /************************************************************************* 873 * SHWaitForFileToOpen [SHELL32.97]869 { FIXME("stub\n"); 870 return 1; 871 } 872 873 /************************************************************************* 874 * SHWaitForFileToOpen [SHELL32.97] 874 875 * 875 876 */ 876 877 BOOL WINAPI SHWaitForFileToOpen( 877 LPCITEMIDLIST pidl, 878 DWORD dwFlags,879 DWORD dwTimeout)880 { 881 FIXME("%p 0x%08lx 0x%08lx stub\n", pidl, dwFlags, dwTimeout);882 return 0;878 LPCITEMIDLIST pidl, 879 DWORD dwFlags, 880 DWORD dwTimeout) 881 { 882 FIXME("%p 0x%08lx 0x%08lx stub\n", pidl, dwFlags, dwTimeout); 883 return 0; 883 884 } 884 885 885 886 /************************************************************************ 886 * shell32_654[SHELL32.654]887 * shell32_654 [SHELL32.654] 887 888 * 888 889 * NOTES: first parameter seems to be a pointer (same as passed to WriteCabinetState) … … 892 893 */ 893 894 HRESULT WINAPI shell32_654 (DWORD x, DWORD y) 894 { FIXME("0x%08lx 0x%08lx stub\n",x,y);895 return 0;895 { FIXME("0x%08lx 0x%08lx stub\n",x,y); 896 return 0; 896 897 } 897 898 898 899 /************************************************************************ 899 * RLBuildListOfPaths[SHELL32.146]900 * RLBuildListOfPaths [SHELL32.146] 900 901 * 901 902 * NOTES … … 903 904 */ 904 905 DWORD WINAPI RLBuildListOfPaths (void) 905 { FIXME("stub\n");906 return 0;906 { FIXME("stub\n"); 907 return 0; 907 908 } 908 909 /************************************************************************ 909 * SHValidateUNC[SHELL32.173]910 * SHValidateUNC [SHELL32.173] 910 911 * 911 912 */ 912 913 HRESULT WINAPI SHValidateUNC (DWORD x, DWORD y, DWORD z) 913 914 { 914 FIXME("0x%08lx 0x%08lx 0x%08lx stub\n",x,y,z);915 return 0;915 FIXME("0x%08lx 0x%08lx 0x%08lx stub\n",x,y,z); 916 return 0; 916 917 } 917 918 918 919 /************************************************************************ 919 * DoEnvironmentSubstA[SHELL32.1222]920 * DoEnvironmentSubstA [SHELL32.1222] 920 921 * 921 922 */ 922 923 HRESULT WINAPI DoEnvironmentSubstA(LPSTR x, LPSTR y) 923 924 { 924 FIXME("(%s, %s) stub\n", debugstr_a(x), debugstr_a(y));925 return 0;925 FIXME("(%s, %s) stub\n", debugstr_a(x), debugstr_a(y)); 926 return 0; 926 927 } 927 928 928 929 /************************************************************************ 929 * DoEnvironmentSubstW[SHELL32.1223]930 * DoEnvironmentSubstW [SHELL32.1223] 930 931 * 931 932 */ 932 933 HRESULT WINAPI DoEnvironmentSubstW(LPWSTR x, LPWSTR y) 933 934 { 934 FIXME("(%s, %s): stub\n", debugstr_w(x), debugstr_w(y));935 return 0;935 FIXME("(%s, %s): stub\n", debugstr_w(x), debugstr_w(y)); 936 return 0; 936 937 } 937 938 938 939 /************************************************************************ 939 * DoEnvironmentSubst[SHELL32.53]940 * DoEnvironmentSubst [SHELL32.53] 940 941 * 941 942 */ 942 943 HRESULT WINAPI DoEnvironmentSubstAW(LPVOID x, LPVOID y) 943 944 { 944 if (SHELL_OsIsUnicode())945 return DoEnvironmentSubstW(x, y);946 return DoEnvironmentSubstA(x, y);945 if (SHELL_OsIsUnicode()) 946 return DoEnvironmentSubstW(x, y); 947 return DoEnvironmentSubstA(x, y); 947 948 } 948 949 949 950 /************************************************************************* 950 951 * shell32_243 [SHELL32.243] 951 * 952 * 952 953 * Win98+ by-ordinal routine. In Win98 this routine returns zero and 953 954 * does nothing else. Possibly this does something in NT or SHELL32 5.0? … … 955 956 */ 956 957 957 BOOL WINAPI shell32_243(DWORD a, DWORD b) 958 { 959 return FALSE; 960 } 961 962 /************************************************************************* 963 * SHELL32_714 [SHELL32]958 BOOL WINAPI shell32_243(DWORD a, DWORD b) 959 { 960 return FALSE; 961 } 962 963 /************************************************************************* 964 * SHELL32_714 [SHELL32] 964 965 */ 965 966 DWORD WINAPI SHELL32_714(LPVOID x) 966 967 { 967 FIXME("(%s)stub\n", debugstr_w(x));968 return 0;969 } 970 971 /************************************************************************* 972 * SHAddFromPropSheetExtArray [SHELL32]968 FIXME("(%s)stub\n", debugstr_w(x)); 969 return 0; 970 } 971 972 /************************************************************************* 973 * SHAddFromPropSheetExtArray [SHELL32] 973 974 */ 974 975 DWORD WINAPI SHAddFromPropSheetExtArray(DWORD a, DWORD b, DWORD c) 975 976 { 976 FIXME("(%08lx,%08lx,%08lx)stub\n", a, b, c);977 return 0;978 } 979 980 /************************************************************************* 981 * SHCreatePropSheetExtArray [SHELL32]977 FIXME("(%08lx,%08lx,%08lx)stub\n", a, b, c); 978 return 0; 979 } 980 981 /************************************************************************* 982 * SHCreatePropSheetExtArray [SHELL32] 982 983 */ 983 984 DWORD WINAPI SHCreatePropSheetExtArray(DWORD a, LPCSTR b, DWORD c) 984 985 { 985 FIXME("(%08lx,%s,%08lx)stub\n", a, debugstr_a(b), c);986 return 0;987 } 988 989 /************************************************************************* 990 * SHReplaceFromPropSheetExtArray [SHELL]986 FIXME("(%08lx,%s,%08lx)stub\n", a, debugstr_a(b), c); 987 return 0; 988 } 989 990 /************************************************************************* 991 * SHReplaceFromPropSheetExtArray [SHELL] 991 992 */ 992 993 DWORD WINAPI SHReplaceFromPropSheetExtArray(DWORD a, DWORD b, DWORD c, DWORD d) 993 994 { 994 FIXME("(%08lx,%08lx,%08lx,%08lx)stub\n", a, b, c, d);995 return 0;996 } 997 998 /************************************************************************* 999 * SHDestroyPropSheetExtArray [SHELL32]995 FIXME("(%08lx,%08lx,%08lx,%08lx)stub\n", a, b, c, d); 996 return 0; 997 } 998 999 /************************************************************************* 1000 * SHDestroyPropSheetExtArray [SHELL32] 1000 1001 */ 1001 1002 DWORD WINAPI SHDestroyPropSheetExtArray(DWORD a) 1002 1003 { 1003 FIXME("(%08lx)stub\n", a);1004 return 0;1005 } 1004 FIXME("(%08lx)stub\n", a); 1005 return 0; 1006 }  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.
  