OWLNext    7.0
Borland's Object Windows Library for the modern age
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
shelwapi.h
Go to the documentation of this file.
1//----------------------------------------------------------------------------
2// ObjectWindows
3// Copyright (c) 1995, 1996 by Borland International, All Rights Reserved
4//
5/// \file
6/// Definitions of Windows light-weight utility APIs:
7/// TSHReg, TSHPath
8//
9//----------------------------------------------------------------------------
10
11#if !defined(OWL_SHELWAPI_H)
12#define OWL_SHELWAPI_H
13
14#include <owl/private/defs.h>
15#if defined(BI_HAS_PRAGMA_ONCE)
16# pragma once
17#endif
18
19#if !defined(_INC_SHLWAPI)
20# include <shlwapi.h>
21#endif
22
23
24
25namespace owl {
26
27class _OWLCLASS TModule;
28
29#include <owl/preclass.h>
30
31//
32/// \class TSHReg
33// ~~~~~ ~~~~~~
34/// delay loading SHLWAPI.DLL
36 public:
37
38/// DeleteEmptyKey mimics RegDeleteKey as it behaves on NT -
39/// delete the subkey only if it does not contain any subkeys and values.
40 static DWORD DeleteEmptyKey(HKEY hkey, LPCTSTR pszSubKey);
41
42/// DeleteKey mimics RegDeleteKey as it behaves on Win95 -
43/// deletes a subkey and all its values and descendants
44 static DWORD DeleteKey(HKEY hkey, LPCTSTR pszSubKey);
45
46/// Duplicates a registry key's HKEY handle
47 static HKEY DuplicateKey(HKEY hkey);
48
49/// These functions open the key, get/set/delete the value, then close
50/// the key.
51 static DWORD DeleteValue(HKEY hkey, LPCTSTR pszSubKey, LPCTSTR pszValue);
54
55/// This functions work just like RegQueryValueEx, except if the
56/// data type is REG_EXPAND_SZ, then these will go ahead and expand
57/// out the string. *pdwType will always be massaged to REG_SZ
58/// if this happens. REG_SZ values are also guaranteed to be null
59/// terminated.
61
62
63/// Enumerates the subkeys of the specified open registry key
65
66/// Enumerates the values of the specified open registry key
68
69/// Retrieves information about a specified registry key
71
72/// Recursively copies the subkeys and values of the source subkey to the destination key
74
75/// Retrieves a file path from the registry, expanding environment variables as needed
77
78/// Takes a file path, replaces folder names with environment strings, and places the resulting string in the registry
80
81 static TModule& GetModule();
82};
83
84
85////////////////////////////////////////////////////////////////////////////////
86
87
88//
89/// \class TSHPath
90// ~~~~~ ~~~~~~
91/// delay loading SHLWAPI.DLL
93 public:
94
95/// Adds a backslash to the end of a string to create the correct syntax for a path.
96/// If the source path already has a trailing backslash, no backslash will be added
97 static LPTSTR AddBackslash(LPTSTR pszPath);
98
99/// Adds a file extension to a path string
100 static BOOL AddExtension(LPTSTR pszPath, LPCTSTR pszExt);
101
102/// Appends one path to the end of another
103 static BOOL Append(LPTSTR pszPath, LPCTSTR pMore);
104
105/// Creates a root path from a given drive number
106 static LPTSTR BuildRoot(LPTSTR pszRoot, int iDrive);
107
108/// Canonicalizes a path
109 static BOOL Canonicalize(LPTSTR pszBuf, LPCTSTR pszPath);
110
111/// Concatenates two strings that represent properly formed paths into one path,
112/// as well as any relative path pieces
114
115/// Truncates a file path to fit within a given pixel width
116/// by replacing path components with ellipses
117 static BOOL CompactPath(HDC hDC, LPTSTR pszPath, UINT dx);
118 static BOOL CompactPathEx(LPTSTR pszOut, LPCTSTR pszSrc, UINT cchMax, DWORD dwFlags);
119
120/// Compares two paths to determine if they share a common prefix.
121/// A prefix is one of these types: "C:\\", ".", "..", "..\\".
122 static int CommonPrefix(LPCTSTR pszFile1, LPCTSTR pszFile2, LPTSTR achPath);
123
124/// Determines whether a path to a file system object
125/// such as a file or directory is valid
126 static BOOL FileExists(LPCTSTR pszPath);
127
128/// Searches a path for an extension
129 static LPTSTR FindExtension(LPCTSTR pszPath);
130
131/// Searches a path for a file name
132 static LPTSTR FindFileName(LPCTSTR pszPath);
133
134/// Parses a path for the next path component
135 static LPTSTR FindNextComponent(LPCTSTR pszPath);
136
137/// Searches for a file
138 static BOOL FindOnPath(LPTSTR pszPath, LPCTSTR * ppszOtherDirs);
139
140/// Finds the command line arguments within a given path
141 static LPTSTR GetArgs(LPCTSTR pszPath);
142
143/// Determines if a given file name has one of a list of suffixes
144 static LPCTSTR FindSuffixArray(LPCTSTR pszPath, const LPCTSTR *apszSuffix, int iArraySize);
145
146/// Determines whether or not a file name is in long format
147 static BOOL IsLFNFileSpec(LPCTSTR lpName);
148
149/// Determines the type of character with respect to a path
150 static UINT GetCharType(tchar ch);
151
152/// Searches a path for a drive letter within the range of 'A' to 'Z'
153/// and returns the corresponding drive number
154 static int GetDriveNumber(LPCTSTR pszPath);
155
156/// Verifies that a path is a valid directory
157 static BOOL IsDirectory(LPCTSTR pszPath);
158
159/// Determines whether or not a specified path is an empty directory
160 static BOOL IsDirectoryEmpty(LPCTSTR pszPath);
161
162/// Searches a path for any path delimiting characters (for example, ':' or '\' ).
163/// If there are no path delimiting characters present,
164/// the path is considered to be a File Spec path
165 static BOOL IsFileSpec(LPCTSTR pszPath);
166
167/// Searches a path to determine if it contains a valid prefix
168/// of the type passed by pszPrefix.
169/// A prefix is one of these types: "C:\\", ".", "..", "..\\"
170 static BOOL IsPrefix(LPCTSTR pszPrefix, LPCTSTR pszPath);
171
172/// Searches a path and determines if it is relative
173 static BOOL IsRelative(LPCTSTR pszPath);
174
175/// Parses a path to determine if it is a directory root
176 static BOOL IsRoot(LPCTSTR pszPath);
177
178/// Compares two paths to determine if they have a common root component
179 static BOOL IsSameRoot(LPCTSTR pszPath1, LPCTSTR pszPath2);
180
181/// Determines if the string is a valid UNC (universal naming convention)
182/// for a server and share path
183 static BOOL IsUNC(LPCTSTR pszPath);
184
185/// Determines whether a path string represents a network resource
186 static BOOL IsNetworkPath(LPCTSTR pszPath);
187
188/// Determines if a string is a valid UNC (universal naming convention)
189/// for a server path only
190 static BOOL IsUNCServer(LPCTSTR pszPath);
191
192/// Determines if a string is a valid universal naming convention (UNC)
193/// share path, \\\\server\\share
194 static BOOL IsUNCServerShare(LPCTSTR pszPath);
195
196/// Determines if a file's registered content type matches
197/// the specified content type.
198/// This function obtains the content type for the specified file type
199/// and compares that string with the pszContentType.
200/// The comparison is not case sensitive
201 static BOOL IsContentType(LPCTSTR pszPath, LPCTSTR pszContentType);
202
203/// Tests a given string to determine if it conforms to a valid URL format
204 static BOOL IsURL(LPCTSTR pszPath);
205
206/// Converts a path to all lowercase characters
207/// to give the path a consistent appearance
208 static BOOL MakePretty(LPTSTR pszPath);
209
210/// Searches a string using a DOS wild card match type
211 static BOOL MatchSpec(LPCTSTR pszFile, LPCTSTR pszSpec);
212
213/// Parses a file location string containing a file location and icon index,
214/// and returns separate values
215 static int ParseIconLocation(LPTSTR pszIconFile);
216
217/// Searches a path for spaces. If spaces are found,
218/// the entire path is enclosed in quotation marks
219 static void QuoteSpaces(LPTSTR lpsz);
220
221/// Creates a relative path from one file or folder to another
223
224/// Removes any arguments from a given path
225 static void RemoveArgs(LPTSTR pszPath);
226
227/// Removes the trailing backslash from a given path
228 static LPTSTR RemoveBackslash(LPTSTR pszPath);
229
230/// Removes all leading and trailing spaces from a string
231 static void RemoveBlanks(LPTSTR pszPath);
232
233/// Removes the file extension from a path, if there is one
234 static void RemoveExtension(LPTSTR pszPath);
235
236/// Removes the trailing file name and backslash from a path, if it has them
237 static BOOL RemoveFileSpec(LPTSTR pszPath);
238
239/// Replaces the extension of a file name with a new extension.
240/// If the file name does not contain an extension,
241/// the extension will be attached to the end of the string
242 static BOOL RenameExtension(LPTSTR pszPath, LPCTSTR pszExt);
243
244/// Determines if a given path is correctly formatted and fully qualified
245 static BOOL SearchAndQualify(LPCTSTR pszPath, LPTSTR pszBuf, UINT cchBuf);
246
247/// Sets the text of a child control in a window or dialog box,
248/// using PathCompactPath to make sure the path fits in the control
249 static void SetDlgItemPath(HWND hDlg, int id, LPCTSTR pszPath);
250
251/// Parses a path, ignoring the drive letter or UNC server/share path parts
252 static LPTSTR SkipRoot(LPCTSTR pszPath);
253
254/// Removes the path portion of a fully qualified path and file
255 static void StripPath(LPTSTR pszPath);
256
257/// Removes all parts of the path except for the root information
258 static BOOL StripToRoot(LPTSTR pszPath);
259
260/// Removes quotes from the beginning and end of a path
261 static void UnquoteSpaces(LPTSTR lpsz);
262
263/// Gives an existing folder the proper attributes to become a system folder
264 static BOOL MakeSystemFolder(LPCTSTR pszPath);
265
266/// Removes the attributes from a folder that make it a system folder.
267/// This folder must actually exist in the file system
268 static BOOL UnmakeSystemFolder(LPCTSTR pszPath);
269
270/// Determines if an existing folder contains the attributes
271/// that make it a system folder.
272/// Alternately indicates if certain attributes qualify
273/// a folder to be a system folder
274 static BOOL IsSystemFolder(LPCTSTR pszPath, DWORD dwAttrb);
275
276/// Removes the decoration from a path string
277 static void Undecorate(LPTSTR pszPath);
278
279/// Takes a fully qualified path, and replaces several folder names
280/// with their associated environment string
281 static BOOL UnExpandEnvStrings(LPCTSTR pszPath, LPTSTR pszBuf, UINT cchBuf);
282 static BOOL UnExpandEnvStringsForUser(HANDLE hToken, LPCTSTR pszPath, LPTSTR pszBuf, UINT cchBuf);
283
284
285 static TModule& GetModule();
286};
287
288#include <owl/posclass.h>
289
290} // OWL namespace
291
292
293#endif // OWL_SHELWAPI_H
294
ObjectWindows dynamic-link libraries (DLLs) construct an instance of TModule, which acts as an object...
Definition module.h:75
delay loading SHLWAPI.DLL
Definition shelwapi.h:92
delay loading SHLWAPI.DLL
Definition shelwapi.h:35
Object Windows Library (OWLNext Core)
Definition animctrl.h:22
char tchar
Definition defs.h:77
#define _OWLCLASS
Definition defs.h:338