Changeset 1145 for trunk/src/shell32/new/classes.cpp
- Timestamp:
- Oct 5, 1999, 9:33:37 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shell32/new/classes.cpp
r791 r1145 1 /* $Id: classes.cpp,v 1.2 1999-10-05 19:33:36 phaller Exp $ */ 2 1 3 /* 2 * file type mapping 3 * (HKEY_CLASSES_ROOT - Stuff) 4 * Win32 SHELL32 for OS/2 4 5 * 6 * Copyright 1997 Marcus Meissner 7 * Copyright 1999 Patrick Haller (haller@zebra.fh-weingarten.de) 8 * Project Odin Software License can be found in LICENSE.TXT 5 9 * 6 10 */ 11 12 /* 13 * file type mapping 14 * (HKEY_CLASSES_ROOT - Stuff) 15 */ 16 17 18 /***************************************************************************** 19 * Includes * 20 *****************************************************************************/ 21 7 22 #include <stdlib.h> 8 23 #include <string.h> 9 24 #include <odin.h> 25 #include <odinwrap.h> 26 #include <os2sel.h> 10 27 11 28 #define ICOM_CINTERFACE 1 … … 23 40 #include <misc.h> 24 41 25 DEFAULT_DEBUG_CHANNEL(shell) 42 43 /***************************************************************************** 44 * Local Variables * 45 *****************************************************************************/ 46 47 ODINDEBUGCHANNEL(shell32-classes) 26 48 27 49 #define MAX_EXTENSION_LENGTH 20 28 50 51 52 /***************************************************************************** 53 * Implementation * 54 *****************************************************************************/ 55 29 56 BOOL HCR_MapTypeToValue ( LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot) 30 { HKEY hkey; 31 char szTemp[MAX_EXTENSION_LENGTH + 2]; 32 33 TRACE("%s %p\n",szExtension, szFileType ); 34 35 if (bPrependDot) 36 strcpy(szTemp, "."); 37 38 lstrcpynA(szTemp+((bPrependDot)?1:0), szExtension, MAX_EXTENSION_LENGTH); 39 40 if (RegOpenKeyExA(HKEY_CLASSES_ROOT,szTemp,0,0x02000000,&hkey)) 41 { return FALSE; 42 } 43 44 if (RegQueryValueA(hkey,NULL,szFileType,&len)) 45 { RegCloseKey(hkey); 46 return FALSE; 47 } 48 49 RegCloseKey(hkey); 50 51 TRACE("-- %s\n", szFileType ); 52 53 return TRUE; 57 { 58 HKEY hkey; 59 char szTemp[MAX_EXTENSION_LENGTH + 2]; 60 61 dprintf(("SHELL32:classes:HCR_MapTypeToValue(%s,%08xh,%08xh,%08xh)\n", 62 szExtension, 63 szFileType, 64 len, 65 bPrependDot)); 66 67 if (bPrependDot) 68 strcpy(szTemp, "."); 69 70 lstrcpynA(szTemp+((bPrependDot)?1:0), szExtension, MAX_EXTENSION_LENGTH); 71 72 if (RegOpenKeyExA(HKEY_CLASSES_ROOT,szTemp,0,0x02000000,&hkey)) 73 { return FALSE; 74 } 75 76 if (RegQueryValueA(hkey,NULL,szFileType,&len)) 77 { RegCloseKey(hkey); 78 return FALSE; 79 } 80 81 RegCloseKey(hkey); 82 83 TRACE("-- %s\n", szFileType ); 84 85 return TRUE; 54 86 } 55 87 56 88 57 89 BOOL HCR_GetExecuteCommand ( LPCSTR szClass, LPCSTR szVerb, LPSTR szDest, LONG len ) 58 { HKEY hkey; 59 char sTemp[256]; 60 61 TRACE("%s %s\n",szClass, szVerb ); 62 63 sprintf(sTemp, "%s\\shell\\%s\\command",szClass, szVerb); 64 65 if (RegOpenKeyExA(HKEY_CLASSES_ROOT,sTemp,0,0x02000000,&hkey)) 66 { return FALSE; 67 } 68 69 if (RegQueryValueA(hkey,NULL,szDest,&len)) 70 { RegCloseKey(hkey); 71 return FALSE; 72 } 73 RegCloseKey(hkey); 74 75 TRACE("-- %s\n", szDest ); 76 77 return TRUE; 90 { 91 HKEY hkey; 92 char sTemp[256]; 93 94 dprintf(("SHELL32:classes:HCR_GetExecuteCommand(%s,%s,%08xh,%08xh)\n", 95 szClass, 96 szVerb, 97 szDest, 98 len)); 99 100 sprintf(sTemp, "%s\\shell\\%s\\command",szClass, szVerb); 101 102 if (RegOpenKeyExA(HKEY_CLASSES_ROOT,sTemp,0,0x02000000,&hkey)) 103 { return FALSE; 104 } 105 106 if (RegQueryValueA(hkey,NULL,szDest,&len)) 107 { RegCloseKey(hkey); 108 return FALSE; 109 } 110 RegCloseKey(hkey); 111 112 TRACE("-- %s\n", szDest ); 113 114 return TRUE; 78 115 79 116 } 80 117 /*************************************************************************************** 81 * HCR_GetDefaultIcon[internal]118 * HCR_GetDefaultIcon [internal] 82 119 * 83 120 * Gets the icon for a filetype 84 121 */ 85 122 BOOL HCR_GetDefaultIcon (LPCSTR szClass, LPSTR szDest, LONG len, LPDWORD dwNr) 86 { HKEY hkey; 87 char sTemp[256]; 88 char sNum[5]; 89 90 TRACE("%s\n",szClass ); 91 92 sprintf(sTemp, "%s\\DefaultIcon",szClass); 93 94 if (RegOpenKeyExA(HKEY_CLASSES_ROOT,sTemp,0,0x02000000,&hkey)) 95 { return FALSE; 96 } 97 98 if (RegQueryValueA(hkey,NULL,szDest,&len)) 99 { RegCloseKey(hkey); 100 return FALSE; 101 } 102 103 RegCloseKey(hkey); 104 105 if (ParseFieldA (szDest, 2, sNum, 5)) 106 { *dwNr=atoi(sNum); 107 } 108 109 ParseFieldA (szDest, 1, szDest, len); 110 111 TRACE("-- %s %li\n", szDest, *dwNr ); 112 113 return TRUE; 123 { 124 HKEY hkey; 125 char sTemp[256]; 126 char sNum[5]; 127 128 dprintf(("SHELL32:classes:HCR_GetDefaultIcon(%s,%08xh,%08xh,%08xh)\n", 129 szClass, 130 szDest, 131 len, 132 dwNr)); 133 134 sprintf(sTemp, "%s\\DefaultIcon",szClass); 135 136 if (RegOpenKeyExA(HKEY_CLASSES_ROOT,sTemp,0,0x02000000,&hkey)) 137 { return FALSE; 138 } 139 140 if (RegQueryValueA(hkey,NULL,szDest,&len)) 141 { RegCloseKey(hkey); 142 return FALSE; 143 } 144 145 RegCloseKey(hkey); 146 147 if (ParseFieldA (szDest, 2, sNum, 5)) 148 { *dwNr=atoi(sNum); 149 } 150 151 ParseFieldA (szDest, 1, szDest, len); 152 153 TRACE("-- %s %li\n", szDest, *dwNr ); 154 155 return TRUE; 114 156 } 115 157 116 158 /*************************************************************************************** 117 * HCR_GetClassName[internal]159 * HCR_GetClassName [internal] 118 160 * 119 161 * Gets the name of a registred class 120 162 */ 121 163 BOOL HCR_GetClassName (REFIID riid, LPSTR szDest, DWORD len) 122 { HKEY hkey; 123 char xriid[50]; 124 BOOL ret = FALSE; 125 DWORD buflen = len; 126 127 strcpy(xriid,"CLSID\\"); 128 WINE_StringFromCLSID(riid,&xriid[strlen(xriid)]); 129 130 TRACE("%s\n",xriid ); 131 132 if (!RegOpenKeyExA(HKEY_CLASSES_ROOT,xriid,0,KEY_READ,&hkey)) 133 { 134 if (!RegQueryValueExA(hkey,"",0,NULL,(LPBYTE)szDest,&len)) 135 { 136 ret = TRUE; 137 } 138 RegCloseKey(hkey); 139 } 140 141 if (!ret || !szDest[0]) 142 { 143 if(IsEqualIID(riid, &CLSID_ShellDesktop)) 144 { 145 LoadStringA(shell32_hInstance, IDS_DESKTOP, szDest, buflen); 146 ret = TRUE; 147 } 148 else if (IsEqualIID(riid, &IID_MyComputer)) 149 { 150 LoadStringA(shell32_hInstance, IDS_MYCOMPUTER, szDest, buflen); 151 ret = TRUE; 152 } 153 } 154 155 TRACE("-- %s\n", szDest); 156 157 return ret; 164 { 165 HKEY hkey; 166 char xriid[50]; 167 BOOL ret = FALSE; 168 DWORD buflen = len; 169 170 dprintf(("SHELL32:classes:HCR_GetClassName(%08xh,%08xh,%08xh)\n", 171 riid, 172 szDest, 173 len)); 174 175 strcpy(xriid,"CLSID\\"); 176 WINE_StringFromCLSID(riid,&xriid[strlen(xriid)]); 177 178 TRACE("%s\n",xriid ); 179 180 if (!RegOpenKeyExA(HKEY_CLASSES_ROOT,xriid,0,KEY_READ,&hkey)) 181 { 182 if (!RegQueryValueExA(hkey,"",0,NULL,(LPBYTE)szDest,&len)) 183 { 184 ret = TRUE; 185 } 186 RegCloseKey(hkey); 187 } 188 189 if (!ret || !szDest[0]) 190 { 191 if(IsEqualIID(riid, &CLSID_ShellDesktop)) 192 { 193 LoadStringA(shell32_hInstance, IDS_DESKTOP, szDest, buflen); 194 ret = TRUE; 195 } 196 else if (IsEqualIID(riid, &IID_MyComputer)) 197 { 198 LoadStringA(shell32_hInstance, IDS_MYCOMPUTER, szDest, buflen); 199 ret = TRUE; 200 } 201 } 202 203 TRACE("-- %s\n", szDest); 204 205 return ret; 158 206 } 159 207 160 208 /*************************************************************************************** 161 * HCR_GetFolderAttributes[internal]209 * HCR_GetFolderAttributes [internal] 162 210 * 163 211 * gets the folder attributes of a class 164 212 */ 165 213 BOOL HCR_GetFolderAttributes (REFIID riid, LPDWORD szDest) 166 { HKEY hkey; 167 char xriid[60]; 168 DWORD attributes; 169 DWORD len = 4; 170 171 strcpy(xriid,"CLSID\\"); 172 WINE_StringFromCLSID(riid,&xriid[strlen(xriid)]); 173 TRACE("%s\n",xriid ); 174 175 strcat (xriid, "\\ShellFolder"); 176 177 if (RegOpenKeyExA(HKEY_CLASSES_ROOT,xriid,0,KEY_READ,&hkey)) 178 { 179 return FALSE; 180 } 181 182 if (RegQueryValueExA(hkey,"Attributes",0,NULL,(LPBYTE)&attributes,&len)) 183 { 184 RegCloseKey(hkey); 185 return FALSE; 186 } 187 188 RegCloseKey(hkey); 189 190 TRACE("-- 0x%08lx\n", attributes); 191 192 *szDest = attributes; 193 194 return TRUE; 195 } 196 214 { 215 HKEY hkey; 216 char xriid[60]; 217 DWORD attributes; 218 DWORD len = 4; 219 220 dprintf(("SHELL32:classes:HCR_GetFolderAttributes(%08xh,%08xh)\n", 221 riid, 222 szDest)); 223 224 strcpy(xriid,"CLSID\\"); 225 WINE_StringFromCLSID(riid,&xriid[strlen(xriid)]); 226 TRACE("%s\n",xriid ); 227 228 strcat (xriid, "\\ShellFolder"); 229 230 if (RegOpenKeyExA(HKEY_CLASSES_ROOT,xriid,0,KEY_READ,&hkey)) 231 { 232 return FALSE; 233 } 234 235 if (RegQueryValueExA(hkey,"Attributes",0,NULL,(LPBYTE)&attributes,&len)) 236 { 237 RegCloseKey(hkey); 238 return FALSE; 239 } 240 241 RegCloseKey(hkey); 242 243 TRACE("-- 0x%08lx\n", attributes); 244 245 *szDest = attributes; 246 247 return TRUE; 248 } 249
Note:
See TracChangeset
for help on using the changeset viewer.