vdfsplat / AppSrc / vwin32fh.h @ 67
History | View | Annotate | Download (34.9 KB)
1 |
//TH-Header
|
---|---|
2 |
//*****************************************************************************************
|
3 |
// Copyright (c) 2004 KURANT Project
|
4 |
// All rights reserved.
|
5 |
//
|
6 |
// $FileName : G:\Projects\vWin32fh\vWin32fh.h
|
7 |
// $ProjectName : Windows 32 bits file handling
|
8 |
// $Authors : Wil van Antwerpen
|
9 |
// $Created : 19.02.2004 19:25
|
10 |
// $Type : BSD (as in do with it whatever you like)
|
11 |
//
|
12 |
// Contents:
|
13 |
// This file contains the Windows API external function call definitions and
|
14 |
// constants as they are used in the vWin32fh package.
|
15 |
//*****************************************************************************************
|
16 |
//TH-RevisionStart
|
17 |
//TH-RevisionEnd
|
18 |
|
19 |
Define CS_DDE_ERR_FILE_NOT_FOUND For "The specified file was not found.\n"
|
20 |
Define CS_DDE_ERR_PATH_NOT_FOUND For "The specified path was not found.\n"
|
21 |
Define CS_DDE_ERR_BAD_FORMAT For "The .EXE file is invalid.\n"
|
22 |
Define CS_DDE_ERR_ACCESSDENIED For "The operating system denied access to the specified file.\n"
|
23 |
Define CS_DDE_ERR_ASSOCINCOMPLETE For "The filename association is incomplete or invalid.\n"
|
24 |
Define CS_DDE_ERR_DDEBUSY For "The DDE transaction could not be completed because other DDE\ntransactions were being processed.\n"
|
25 |
Define CS_DDE_ERR_DDEFAIL For "The DDE transaction failed.\n"
|
26 |
Define CS_DDE_ERR_DDETIMEOUT For "The DDE transaction could not be completed,\nbecause the request timed out.\n"
|
27 |
Define CS_DDE_ERR_DLLNOTFOUND For "The specified dynamic-link library was not found.\n"
|
28 |
Define CS_DDE_ERR_NOASSOC For "There is no application associated with the given filename extension.\n"
|
29 |
Define CS_DDE_ERR_OOM For "There is not enough free memory available to complete the operation.\n"
|
30 |
Define CS_DDE_ERR_PNF For "The specified path was not found.\n"
|
31 |
Define CS_DDE_ERR_SHARE For "A sharing violation occurred.\n"
|
32 |
Define CS_DDE_ERR_UNKNOWN_LINE1 For "Unknown DDE-error occurred.\nErrornumber"
|
33 |
Define CS_DDE_ERR_UNKNOWN_LINE2 For ".\n"
|
34 |
Define CS_DDE_ERR_HANDL_PAKTC For "\nPress a key to continue...\n\n"
|
35 |
Define CS_DDE_ERR_HANDL_CAPTION For "a DDE-error occurred"
|
36 |
|
37 |
|
38 |
Define vMax_Path For |CI260 |
39 |
Define vMinChar For |CI$80
|
40 |
Define vMaxChar For |CI$7F
|
41 |
Define vMinShort For |CI$8000
|
42 |
Define vMaxShort For |CI$7FFF
|
43 |
Define vMinLong For |CI$80000000
|
44 |
Define vMaxLong For |CI$7FFFFFFF
|
45 |
Define vMaxByte For |CI$FF |
46 |
Define vMaxWord For |CI$FFFF |
47 |
Define vMaxDword For |CI$FFFFFFFF |
48 |
|
49 |
|
50 |
|
51 |
// For FindFirstFile
|
52 |
Define vINVALID_HANDLE_VALUE For |CI-1
|
53 |
Define vINVALID_FILE_SIZE For |CI$FFFFFFFF |
54 |
Define vERROR_NO_MORE_FILES For |CI18 |
55 |
|
56 |
// The defines below can be used to find out what kind of error has occurred if
|
57 |
// the API-call ShellExecute is used.
|
58 |
Define vERROR_FILE_NOT_FOUND For |CI0002 |
59 |
Define vERROR_PATH_NOT_FOUND For |CI0003 |
60 |
Define vERROR_BAD_FORMAT For |CI0011 |
61 |
Define vSE_ERR_ACCESSDENIED For |CI0005 |
62 |
Define vSE_ERR_ASSOCINCOMPLETE For |CI0027 |
63 |
Define vSE_ERR_DDEBUSY For |CI0030 |
64 |
Define vSE_ERR_DDEFAIL For |CI0029 |
65 |
Define vSE_ERR_DDETIMEOUT For |CI0028 |
66 |
Define vSE_ERR_DLLNOTFOUND For |CI0032 |
67 |
Define vSE_ERR_FNF For |CI0002 |
68 |
Define vSE_ERR_NOASSOC For |CI0031 |
69 |
Define vSE_ERR_OOM For |CI0008 |
70 |
Define vSE_ERR_PNF For |CI0003 |
71 |
Define vSE_ERR_SHARE For |CI0026 |
72 |
|
73 |
|
74 |
// C-Structure
|
75 |
//typedef struct _browseinfo {
|
76 |
// HWND hwndOwner;
|
77 |
// LPCITEMIDLIST pidlRoot;
|
78 |
// LPSTR pszDisplayName;
|
79 |
// LPCSTR lpszTitle;
|
80 |
// UINT ulFlags;
|
81 |
// BFFCALLBACK lpfn;
|
82 |
// LPARAM lParam;
|
83 |
// int iImage;
|
84 |
//} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;
|
85 |
|
86 |
//declare C structure struct_browseinfo
|
87 |
//as documented in MSDN under Windows Shell API
|
88 |
Type vtBrowseInfo |
89 |
Field vtBrowseInfo.hWndOwner as Handle |
90 |
Field vtBrowseInfo.pIDLRoot as Pointer |
91 |
Field vtBrowseInfo.pszDisplayName as Pointer |
92 |
Field vtBrowseInfo.lpszTitle as Pointer |
93 |
Field vtBrowseInfo.ulFlags as dWord |
94 |
Field vtBrowseInfo.lpfnCallback as Pointer |
95 |
Field vtBrowseInfo.lParam as dWord |
96 |
Field vtBrowseInfo.iImage as dWord |
97 |
End_Type // tBrowseInfo
|
98 |
|
99 |
// Browsing for directory.
|
100 |
Define vBIF_RETURNONLYFSDIRS For |CI$0001 // For finding a folder to start document searching |
101 |
Define vBIF_DONTGOBELOWDOMAIN For |CI$0002 // For starting the Find Computer |
102 |
Define vBIF_STATUSTEXT For |CI$0004 // Includes a status area in the dialog box. |
103 |
// The callback function can set the status text by
|
104 |
// sending messages to the dialog box.
|
105 |
Define vBIF_RETURNFSANCESTORS For |CI$0008 // Only returns file system ancestors. |
106 |
|
107 |
Define vBIF_BROWSEFORCOMPUTER For |CI$1000 // Browsing for Computers. |
108 |
Define vBIF_BROWSEFORPRINTER For |CI$2000 // Browsing for Printers |
109 |
|
110 |
// message from browser
|
111 |
//Define BFFM_INITIALIZED 1
|
112 |
//Define BFFM_SELCHANGED 2
|
113 |
|
114 |
// messages to browser
|
115 |
//Define BFFM_SETSTATUSTEXT (WM_USER + 100)
|
116 |
//Define BFFM_ENABLEOK (WM_USER + 101)
|
117 |
//Define BFFM_SETSELECTION (WM_USER + 102)
|
118 |
|
119 |
|
120 |
External_function vWin32_SHBrowseForFolder "SHBrowseForFolder" shell32.dll ;
|
121 |
Pointer lpsBrowseInfo Returns dWord |
122 |
|
123 |
External_function vWin32_SHGetPathFromIDList "SHGetPathFromIDList" shell32.dll ;
|
124 |
Pointer pidList Pointer lpBuffer Returns dWord |
125 |
|
126 |
External_function vWin32_CoTaskMemFree "CoTaskMemFree" ole32.dll Pointer pV Returns Integer
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
Type vtSecurity_attributes |
132 |
Field vtSecurity_attributes.nLength as dWord |
133 |
Field vtSecurity_attributes.lpDescriptor as Pointer |
134 |
Field vtSecurity_attributes.bInheritHandle as Integer |
135 |
End_Type // vtSecurity_attributes
|
136 |
|
137 |
//nLength:
|
138 |
// Specifies the size, in bytes, of this structure. Set this value to the size of the
|
139 |
// SECURITY_ATTRIBUTES structure.
|
140 |
// Windows NT: Some functions that use the SECURITY_ATTRIBUTES structure do not verify the
|
141 |
// value of the nLength member. However, an application should still set it properly.
|
142 |
// That ensures current, future, and cross-platform compatibility.
|
143 |
//
|
144 |
//lpSecurityDescriptor:
|
145 |
// Points to a security descriptor for the object that controls the sharing of it.
|
146 |
// If NULL is specified for this member, the object may be assigned the default security
|
147 |
// descriptor of the calling process.
|
148 |
//
|
149 |
//bInheritHandle:
|
150 |
// Specifies whether the returned handle is inherited when a new process is created.
|
151 |
// If this member is TRUE, the new process inherits the handle.
|
152 |
|
153 |
|
154 |
// BOOL CreateDirectory(
|
155 |
// LPCTSTR lpPathName,
|
156 |
// LPSECURITY_ATTRIBUTES lpSecurityAttributes // pointer to a security descriptor
|
157 |
// );
|
158 |
//
|
159 |
// lpPathName
|
160 |
// Points to a null-terminated string that specifies the path of the directory
|
161 |
// to be created.
|
162 |
// There is a default string size limit for paths of MAX_PATH characters.
|
163 |
// This limit is related to how the CreateDirectory function parses paths.
|
164 |
// lpSecurityAttributes
|
165 |
// Pointer to a SECURITY_ATTRIBUTES structure als called a security descriptor that
|
166 |
// determines whether the returned handle can be inherited by child processes.
|
167 |
// If lpSecurityAttributes is NULL, the handle cannot be inherited.
|
168 |
// Returns:
|
169 |
// If the function succeeds, the return value is nonzero.
|
170 |
// If the function fails, the return value is zero. To get extended error information, call GetLastError.
|
171 |
External_function vWin32_CreateDirectory "CreateDirectoryA" kernel32.dll ;
|
172 |
Pointer lpPathName Pointer lpSecurity_Attributes Returns Integer |
173 |
|
174 |
|
175 |
// lpPathName
|
176 |
// Points to a null-terminated string that specifies the path of the directory
|
177 |
// to be removed.
|
178 |
// There is a default string size limit for paths of MAX_PATH characters.
|
179 |
// Returns:
|
180 |
// If the function succeeds, the return value is nonzero.
|
181 |
// If the function fails, the return value is zero. To get extended error information, call GetLastError.
|
182 |
External_function vWin32_RemoveDirectory "RemoveDirectoryA" kernel32.dll ;
|
183 |
Pointer lpPathName Returns Integer |
184 |
|
185 |
|
186 |
|
187 |
// The ShellExecute function opens or prints a specified file. The file can be an
|
188 |
// executable file or a document file.
|
189 |
//
|
190 |
// Operation can be one of the following:
|
191 |
// "OPEN" The function opens the file specified by lpFile.
|
192 |
// The file can be an executable file or a document file.
|
193 |
// The file can be a folder to open.
|
194 |
// "PRINT" The function prints the file specified by lpFile.
|
195 |
// The file should be a document file. If the file is an executable file,
|
196 |
// the function opens the file, as if ?open? had been specified.
|
197 |
// "EXPLORE" The function explores the folder specified by lpFile.
|
198 |
//
|
199 |
// Return Values:
|
200 |
//
|
201 |
// If the function succeeds, the return value is the instance handle of the application that
|
202 |
// was run, or the handle of a dynamic data exchange (DDE) server application.
|
203 |
// If the function fails, the return value is an error value that is less than or equal to 32.
|
204 |
//
|
205 |
// The following table lists these error values:
|
206 |
// Public Const ERROR_FILE_NOT_FOUND = 2&
|
207 |
// Public Const ERROR_PATH_NOT_FOUND = 3&
|
208 |
// Public Const ERROR_BAD_FORMAT = 11&
|
209 |
// Public Const SE_ERR_ACCESSDENIED = 5
|
210 |
// Public Const SE_ERR_ASSOCINCOMPLETE = 27
|
211 |
// Public Const SE_ERR_DDEBUSY = 30
|
212 |
// Public Const SE_ERR_DDEFAIL = 29
|
213 |
// Public Const SE_ERR_DDETIMEOUT = 28
|
214 |
// Public Const SE_ERR_DLLNOTFOUND = 32
|
215 |
// Public Const SE_ERR_FNF = 2
|
216 |
// Public Const SE_ERR_NOASSOC = 31
|
217 |
// Public Const SE_ERR_OOM = 8
|
218 |
// Public Const SE_ERR_PNF = 3
|
219 |
// Public Const SE_ERR_SHARE = 26
|
220 |
|
221 |
|
222 |
|
223 |
// Code to open the program that is associated with the selected file.
|
224 |
//
|
225 |
// External function call used in Procedure DoStartDocument
|
226 |
External_function vWin32_ShellExecute "ShellExecuteA" shell32.dll ;
|
227 |
Handle hWnd ; |
228 |
Pointer lpOperation ; |
229 |
Pointer lpFile ; |
230 |
Pointer lpParameters ; |
231 |
Pointer lpDirectory ; |
232 |
Dword iShowCmd Returns Handle |
233 |
|
234 |
|
235 |
|
236 |
#IFDEF vFO_MOVE
|
237 |
#ELSE
|
238 |
|
239 |
#Replace vFO_MOVE |CI$0001 |
240 |
#Replace vFO_COPY |CI$0002 |
241 |
#Replace vFO_DELETE |CI$0003 |
242 |
#Replace vFO_RENAME |CI$0004 |
243 |
|
244 |
#Replace vFOF_MULTIDESTFILES |CI$0001 |
245 |
#Replace vFOF_CONFIRMMOUSE |CI$0002 |
246 |
#Replace vFOF_SILENT |CI$0004 // don't create progress/report |
247 |
#Replace vFOF_RENAMEONCOLLISION |CI$0008 |
248 |
#Replace vFOF_NOCONFIRMATION |CI$0010 // Don't prompt the user. |
249 |
#Replace vFOF_WANTMAPPINGHANDLE |CI$0020 // Fill in SHFILEOPSTRUCT.hNameMappings |
250 |
// Must be freed using SHFreeNameMappings
|
251 |
#Replace vFOF_ALLOWUNDO |CI$0040 |
252 |
#Replace vFOF_FILESONLY |CI$0080 // on *.*, do only files |
253 |
#Replace vFOF_SIMPLEPROGRESS |CI$0100 // means don't show names of files |
254 |
#Replace vFOF_NOCONFIRMMKDIR |CI$0200 // don't confirm making any needed dirs |
255 |
|
256 |
Type vtShFileOpStruct |
257 |
Field vtShFileOpStruct.hWnd as Handle |
258 |
Field vtShFileOpStruct.wFunc as Integer |
259 |
Field vtShFileOpStruct.pFrom as Pointer |
260 |
Field vtShFileOpStruct.pTo as Pointer |
261 |
Field vtShFileOpStruct.fFlags as Short |
262 |
Field vtShFileOpStruct.fAnyOperationsAborted as Short |
263 |
Field vtShFileOpStruct.hNameMappings as Pointer |
264 |
Field vtShFileOpStruct.lpszProgressTitle as Pointer // only used if FOF_SIMPLEPROGRESS
|
265 |
End_Type // tShFileOpStruct
|
266 |
|
267 |
// hwnd
|
268 |
// Handle of the dialog box to use to display information about the status of the operation.
|
269 |
|
270 |
// wFunc
|
271 |
// Operation to perform. This member can be one of the following values:
|
272 |
// FO_COPY Copies the files specified by pFrom to the location specified by pTo.
|
273 |
// FO_DELETE Deletes the files specified by pFrom (pTo is ignored).
|
274 |
// FO_MOVE Moves the files specified by pFrom to the location specified by pTo.
|
275 |
// FO_RENAME Renames the files specified by pFrom.
|
276 |
|
277 |
// pFrom
|
278 |
// Pointer to a buffer that specifies one or more source file names. Multiple names must
|
279 |
// be null-separated. The list of names must be double null-terminated.
|
280 |
|
281 |
// pTo
|
282 |
// Pointer to a buffer that contains the name of the destination file or directory. The
|
283 |
// buffer can contain mutiple destination file names if the fFlags member specifies
|
284 |
// FOF_MULTIDESTFILES. Multiple names must be null-separated. The list of names must be
|
285 |
// double null-terminated.
|
286 |
|
287 |
// fAnyOperationsAborted
|
288 |
// Value that receives TRUE if the user aborted any file operations before they
|
289 |
// were completed or FALSE otherwise.
|
290 |
|
291 |
#ENDIF
|
292 |
|
293 |
// Performs a copy, move, rename, or delete operation on a file system object.
|
294 |
// This can be a file or a folder.
|
295 |
// With thanks to Andrew S Kaplan
|
296 |
External_function vWin32_SHFileOperation "SHFileOperationA" Shell32.dll ;
|
297 |
Pointer lpFileOp Returns Integer |
298 |
|
299 |
|
300 |
// Thanks To Oliver Nelson for posting this code on the newsgroups
|
301 |
External_function vWin32_GetWindowsDirectory "GetWindowsDirectoryA" kernel32.dll ;
|
302 |
Pointer lpBuffer Integer nSize Returns Integer |
303 |
|
304 |
|
305 |
|
306 |
// Courtesy Of Vincent Oorsprong
|
307 |
//External_Function vWin32_GetTempFileName "GetTempFileNameA" Kernel32.Dll ;
|
308 |
// Pointer lpPathName ;
|
309 |
// Pointer lpPrefixString ;
|
310 |
// Integer uUnique ;
|
311 |
// Pointer lpTempFileName ;
|
312 |
// Returns Integer
|
313 |
// **WvA: 28-04-2005 Changed string parameter type into pointers
|
314 |
External_function vWin32_GetTempFileName "GetTempFileNameA" kernel32.dll Pointer lpsPath ;
|
315 |
Pointer lpsPrefix Integer iUnique Pointer pLoad Returns Integer |
316 |
|
317 |
External_function vWin32_GetTempPath "GetTempPathA" Kernel32.Dll ;
|
318 |
Dword nBufferLength ; |
319 |
Pointer lpBuffer ; |
320 |
Returns Integer |
321 |
|
322 |
External_function vWin32_DeleteFile "DeleteFileA" Kernel32.Dll ;
|
323 |
Pointer lpFileName ; |
324 |
Returns Integer |
325 |
|
326 |
// from:
|
327 |
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
|
328 |
//
|
329 |
Define vCSIDL_FLAG_CREATE For |CI$8000 // IE5+, use this to create a special folder |
330 |
Define vCSIDL_ADMIN_TOOLS For |CI$0030 // IE5+, The file system directory that is used to store administrative tools for an individual user |
331 |
Define vCSIDL_ALT_STARTUP For |CI$001D // The file system directory that corresponds to the user's nonlocalized Startup program group |
332 |
Define vCSIDL_APPDATA For |CI$001A // Version 4.71. The file system directory that serves as a common repository for application-specific data. A typical path is C:\Documents and Settings\<username>\Application Data |
333 |
Define vCSIDL_BITBUCKET For |CI$000A // The virtual folder containing the objects in the user's Recycle Bin |
334 |
Define vCSIDL_CDBURN_AREA For |CI$003B // IE6+ The file system directory acting as a staging area for files waiting to be written to CD. A typical path is C:\Documents and Settings\<username>\Local Settings\Application Data\Microsoft\CD Burning |
335 |
Define vCSIDL_COMMON_ADMINTOOLS For |CI$002F // IE5+ The file system directory containing administrative tools for all users of the computer |
336 |
Define vCSIDL_COMMON_ALTSTARTUP For |CI$001E // The file system directory that corresponds to the nonlocalized Startup program group for all users |
337 |
Define vCSIDL_COMMON_APPDATA For |CI$0023 // IE5+ The file system directory containing application data for all users. A typical path is C:\Documents and Settings\All Users\Application Data |
338 |
Define vCSIDL_COMMON_DESKTOPDIRECTORY for |CI$0019 // WinNT+ Only, The file system directory that contains files and folders that appear on the desktop for all users. A typical path is C:\Documents and Settings\All Users\Desktop |
339 |
Define vCSIDL_COMMON_DOCUMENTS For |CI$002E // IE5+ The file system directory that contains documents that are common to all users. A typical paths is C:\Documents and Settings\All Users\Documents |
340 |
Define vCSIDL_COMMON_FAVORITES For |CI$001F // The file system directory that serves as a common repository for favorite items common to all users |
341 |
Define vCSIDL_COMMON_MUSIC For |CI$0035 // IE6+ The file system directory that serves as a repository for music files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Music |
342 |
Define vCSIDL_COMMON_PICTURES For |CI$0036 // The file system directory that serves as a repository for image files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Pictures |
343 |
Define vCSIDL_COMMON_PROGRAMS For |CI$0017 // WinNT+ The file system directory that contains the directories for the common program groups that appear on the Start menu for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs |
344 |
Define vCSIDL_COMMON_STARTMENU For |CI$0016 // WinNT+ The file system directory that contains the programs and folders that appear on the Start menu for all users. A typical path is C:\Documents and Settings\All Users\Start Menu |
345 |
Define vCSIDL_COMMON_STARTUP For |CI$0018 // WinNT+ The file system directory that contains the programs that appear in the Startup folder for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs\Startup |
346 |
Define vCSIDL_COMMON_TEMPLATES For |CI$002D // WinNT+ The file system directory that contains the templates that are available to all users. A typical path is C:\Documents and Settings\All Users\Templates |
347 |
Define vCSIDL_COMMON_VIDEO For |CI$0037 // IE6+ The file system directory that serves as a repository for video files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Videos |
348 |
Define vCSIDL_COMPUTERSNEARME For |CI$003D // The folder representing other machines in your workgroup |
349 |
Define vCSIDL_CONNECTIONS For |CI$0031 // The virtual folder representing Network Connections, containing network and dial-up connections |
350 |
Define vCSIDL_CONTROLS For |CI$0003 // The virtual folder containing icons for the Control Panel applications |
351 |
Define vCSIDL_COOKIES For |CI$0021 // The file system directory that serves as a common repository for Internet cookies. A typical path is C:\Documents and Settings\username\Cookies |
352 |
Define vCSIDL_DESKTOP For |CI$0000 // The virtual folder representing the Windows desktop, the root of the namespace |
353 |
Define vCSIDL_DESKTOPDIRECTORY For |CI$0010 // The file system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself). A typical path is C:\Documents and Settings\username\Desktop |
354 |
Define vCSIDL_DRIVES For |CI$0011 // The virtual folder representing My Computer, containing everything on the local computer: storage devices, printers, and Control Panel. The folder may also contain mapped network drives |
355 |
Define vCSIDL_FAVORITES For |CI$0006 // The file system directory that serves as a common repository for the user's favorite items. A typical path is C:\Documents and Settings\username\Favorites |
356 |
Define vCSIDL_FONTS For |CI$0014 // A virtual folder containing fonts. A typical path is C:\Windows\Fonts |
357 |
Define vCSIDL_HISTORY For |CI$0022 // The file system directory that serves as a common repository for Internet history items |
358 |
Define vCSIDL_INTERNET For |CI$0001 // A virtual folder representing the Internet |
359 |
Define vCSIDL_INTERNET_CACHE For |CI$0020 // Comctl4.72+, The file system directory that serves as a common repository for temporary Internet files. A typical path is C:\Documents and Settings\username\Local Settings\Temporary Internet Files |
360 |
Define vCSIDL_LOCAL_APPDATA For |CI$001C // IE5+ The file system directory that serves as a data repository for local (nonroaming) applications. A typical path is C:\Documents and Settings\username\Local Settings\Application Data |
361 |
Define vCSIDL_MYDOCUMENTS For |CI$000C // IE6+ The virtual folder representing the My Documents desktop item |
362 |
Define vCSIDL_MYMUSIC For |CI$000D // The file system directory that serves as a common repository for music files. A typical path is C:\Documents and Settings\User\My Documents\My Music |
363 |
Define vCSIDL_MYPICTURES For |CI$0027 // IE5+ The file system directory that serves as a common repository for image files. A typical path is C:\Documents and Settings\username\My Documents\My Pictures |
364 |
Define vCSIDL_MYVIDEO For |CI$000E // IE6+ The file system directory that serves as a common repository for video files. A typical path is C:\Documents and Settings\username\My Documents\My Videos |
365 |
Define vCSIDL_NETHOOD For |CI$0013 // A file system directory containing the link objects that may exist in the My Network Places virtual folder. It is not the same as CSIDL_NETWORK, which represents the network namespace root. A typical path is C:\Documents and Settings\username\NetHood |
366 |
Define vCSIDL_NETWORK For |CI$0012 // A virtual folder representing Network Neighborhood, the root of the network namespace hierarchy |
367 |
Define vCSIDL_PERSONAL For |CI$0005 // (Documents folder) IE6 The virtual folder representing the My Documents desktop item. |
368 |
// This is equivalent to CSIDL_MYDOCUMENTS. Previous to Version 6.0. The file system directory used to physically store a user's common repository of documents. A typical path is C:\Documents and Settings\username\My Documents
|
369 |
Define vCSIDL_PHOTOALBUMS For |CI$0045 // Vista+ The virtual folder used to store photo albums, typically username\My Pictures\Photo Albums |
370 |
Define vCSIDL_PLAYLISTS For |CI$003F // Vista+ The virtual folder used to store play albums, typically username\My Music\Playlists |
371 |
Define vCSIDL_PRINTERS For |CI$0004 // The virtual folder containing installed printers |
372 |
Define vCSIDL_PRINTHOOD For |CI$001B // The file system directory that contains the link objects that can exist in the Printers virtual folder. A typical path is C:\Documents and Settings\username\PrintHood |
373 |
Define vCSIDL_PROFILE For |CI$0028 // IE5+ The user's profile folder. A typical path is C:\Documents and Settings\username |
374 |
Define vCSIDL_PROGRAM_FILES For |CI$0026 // IE5+ The Program Files folder. A typical path is C:\Program Files |
375 |
Define vCSIDL_PROGRAM_FILES_COMMON For |CI$002B // IE5+, WinNT+ A folder for components that are shared across applications. A typical path is C:\Program Files\Common |
376 |
Define vCSIDL_PROGRAMS For |CI$0002 // The file system directory that contains the user's program groups (which are themselves file system directories). A typical path is C:\Documents and Settings\username\Start Menu\Programs |
377 |
Define vCSIDL_RECENT For |CI$0008 // The file system directory that contains shortcuts to the user's most recently used documents. A typical path is C:\Documents and Settings\username\My Recent Documents |
378 |
Define vCSIDL_RESOURCES For |CI$0038 // undocumented |
379 |
Define vCSIDL_SAMPLE_MUSIC For |CI$0040 // Vista+, The file system directory that contains sample music. A typical path is C:\Documents and Settings\username\My Documents\My Music\Sample Music |
380 |
Define vCSIDL_SAMPLE_PLAYLISTS For |CI$0041 // Vista+, The file system directory that contains sample playlists. A typical path is C:\Documents and Settings\username\My Documents\My Music\Sample Playlists |
381 |
Define vCSIDL_SAMPLE_PICTURES For |CI$0042 // Vista+, The file system directory that contains sample pictures. A typical path is C:\Documents and Settings\username\My Documents\My Pictures\Sample Pictures |
382 |
Define vCSIDL_SAMPLE_VIDEOS For |CI$0043 // Vista+, The file system directory that contains sample videos. A typical path is C:\Documents and Settings\username\My Documents\My Videos\Sample Videos |
383 |
Define vCSIDL_SENDTO For |CI$0009 // The file system directory that contains Send To menu items. A typical path is C:\Documents and Settings\username\SendTo |
384 |
Define vCSIDL_STARTMENU For |CI$000B // The file system directory containing Start menu items. A typical path is C:\Documents and Settings\username\Start Menu |
385 |
Define vCSIDL_STARTUP For |CI$0007 // The file system directory that corresponds to the user's Startup program group. The system starts these programs whenever any user logs onto Windows NT or starts Windows 95. A typical path is C:\Documents and Settings\username\Start Menu\Programs\Startup |
386 |
Define vCSIDL_SYSTEM For |CI$0025 // The Windows System folder. A typical path is C:\Windows\System32 |
387 |
Define vCSIDL_SYSTEMX86 For |CI$0029 // |
388 |
Define vCSIDL_TEMPLATES For |CI$0015 // The file system directory that serves as a common repository for document templates. A typical path is C:\Documents and Settings\username\Templates |
389 |
Define vCSIDL_WINDOWS For |CI$0024 // The Windows directory or SYSROOT. This corresponds to the %windir% or %SYSTEMROOT% environment variables. A typical path is C:\Windows |
390 |
|
391 |
|
392 |
//HRESULT SHGetFolderPath(
|
393 |
// HWND hwndOwner,
|
394 |
// int nFolder,
|
395 |
// HANDLE hToken,
|
396 |
// DWORD dwFlags,
|
397 |
// LPTSTR pszPath
|
398 |
//);
|
399 |
// This function is a superset of SHGetSpecialFolderPath, included with earlier versions of
|
400 |
// the shell. It is implemented in a redistributable DLL, SHFolder.dll, that also simulates
|
401 |
// many of the new shell folders on older platforms such as Windows 95, Windows 98, and
|
402 |
// Windows NT 4.0. This DLL always calls the current platform's version of this function.
|
403 |
// If that fails, it will try to simulate the appropriate behavior.
|
404 |
//
|
405 |
External_function vWin32_SHGetFolderPath "SHGetFolderPathA" SHFolder.Dll ;
|
406 |
Pointer hWnd ; |
407 |
Integer nFolder ; |
408 |
Pointer hToken ; |
409 |
DWord dwFlags ; |
410 |
Pointer lpszPath ; |
411 |
Returns Integer |
412 |
|
413 |
|
414 |
|
415 |
Type vWin32_Find_Data |
416 |
Field vWin32_Find_Data.dwFileAttributes As Dword |
417 |
Field vWin32_Find_Data.ftCreationLowDateTime As Dword |
418 |
Field vWin32_Find_Data.ftCreationHighDateTime As Dword |
419 |
Field vWin32_Find_Data.ftLastAccessLowDateTime As dword |
420 |
Field vWin32_Find_Data.ftLastAccessHighDateTime As Dword |
421 |
Field vWin32_Find_Data.ftLastWriteLowDateTime As Dword |
422 |
Field vWin32_Find_Data.ftLastWriteHighDateTime As Dword |
423 |
Field vWin32_Find_Data.nFileSizeHigh As Dword |
424 |
Field vWin32_Find_Data.nFileSizeLow As Dword |
425 |
Field vWin32_Find_Data.dwReserved0 As Dword |
426 |
Field vWin32_Find_Data.dwReserved1 As Dword |
427 |
Field vWin32_Find_Data.cFileName As Char vMax_Path |
428 |
Field vWin32_Find_Data.cAlternateFileName As Char 14
|
429 |
End_Type // vWin32_Find_Data
|
430 |
|
431 |
// Courtesy Of Vincent Oorsprong
|
432 |
// lpFileName : address of name of file to search for
|
433 |
// lpFindFileData : address of returned information
|
434 |
External_function vWin32_FindFirstFile "FindFirstFileA" Kernel32.dll Pointer lpFileName ;
|
435 |
Pointer lpFindFileData Returns Handle |
436 |
|
437 |
// Courtesy Of Vincent Oorsprong
|
438 |
// hFindFile : handle of search
|
439 |
// lpFindFileData : address of structure for data on found file
|
440 |
External_function vWin32_FindNextFile "FindNextFileA" Kernel32.dll Handle hFindFile ;
|
441 |
Pointer lpFindFileData Returns Integer |
442 |
|
443 |
// Courtesy Of Vincent Oorsprong
|
444 |
// hFindFile : file search handle
|
445 |
External_function vWin32_FindClose "FindClose" Kernel32.dll Handle hFindFile Returns Integer
|
446 |
|
447 |
|
448 |
|
449 |
Type vFileTime |
450 |
Field vFileTime.dwLowDateTime As Dword |
451 |
Field vFileTime.dwHighDateTime As Dword |
452 |
End_Type // vFileTime
|
453 |
|
454 |
|
455 |
Type vSystemTime |
456 |
Field vSystemTime.wYear As Word |
457 |
Field vSystemTime.wMonth As Word |
458 |
Field vSystemTime.wDayOfWeek As Word |
459 |
Field vSystemTime.wDay As Word |
460 |
Field vSystemTime.wHour As Word |
461 |
Field vSystemTime.wMinute As Word |
462 |
Field vSystemTime.wSecond As Word |
463 |
Field vSystemTime.wMilliSeconds As Word |
464 |
End_Type // vSystemTime
|
465 |
|
466 |
|
467 |
// Courtesy Of Vincent Oorsprong
|
468 |
// lpFileTime : pointer to file time to convert
|
469 |
// lpSystemTime : pointer to structure to receive system time
|
470 |
External_function vWin32_FileTimeToSystemTime "FileTimeToSystemTime" Kernel32.Dll ;
|
471 |
Pointer lpFileTime Pointer lpsystemTime Returns Integer |
472 |
|
473 |
// Courtesy Of Vincent Oorsprong
|
474 |
// This function formats the time in a picture-string passed
|
475 |
//
|
476 |
// Picture Meaning
|
477 |
// h Hours with no leading zero for single-digit hours; 12-hour clock
|
478 |
// hh Hours with leading zero for single-digit hours; 12-hour clock
|
479 |
// H Hours with no leading zero for single-digit hours; 24-hour clock
|
480 |
// HH Hours with leading zero for single-digit hours; 24-hour clock
|
481 |
// m Minutes with no leading zero for single-digit minutes
|
482 |
// mm Minutes with leading zero for single-digit minutes
|
483 |
// s Seconds with no leading zero for single-digit seconds
|
484 |
// ss Seconds with leading zero for single-digit seconds
|
485 |
// t One character time marker string, such as A or P
|
486 |
// tt Multicharacter time marker string, such as AM or PM
|
487 |
//
|
488 |
// For example, to get the time string "11:29:40 PM"
|
489 |
// use the following picture string: "hh" : "mm" : "ss tt"
|
490 |
|
491 |
External_function vWin32_GetTimeFormat "GetTimeFormatA" Kernel32.Dll ;
|
492 |
Dword LCID Dword dwFlags Pointer lpsSystemTime Pointer lpFormat Pointer lpTimeStr ; |
493 |
Integer cchTime Returns Integer |
494 |
|
495 |
|
496 |
// Courtesy Of Vincent Oorsprong
|
497 |
// This function formats the date in a picture-string passed
|
498 |
//
|
499 |
// Picture Meaning
|
500 |
// d Day of month as digits with no leading zero for single-digit days.
|
501 |
// dd Day of month as digits with leading zero for single-digit days.
|
502 |
// ddd Day of week as a three-letter abbreviation. The function uses the
|
503 |
// LOCALE_SABBREVOAYMAME value associated with the specified locale.
|
504 |
// dddd Day of week as its full name. The function uses the LOCALE_SDAYNAME
|
505 |
// value associated with the specified locale.
|
506 |
// M Month as digits with no leading zero for single-digit months.
|
507 |
// MM Month as digits with leading zero for single-digit months.
|
508 |
// MMM Month as a three-letter abbreviation. The function uses the
|
509 |
// LOCALE_SABBREVMONTHNAME value associated with the specified locale.
|
510 |
// MMMM Month as its full name. The function uses the LOCALE_SMONTHNAME value
|
511 |
// associated with the specified locale.
|
512 |
// y Year as last two digits, but with no leading zero for years less than 10.
|
513 |
// yy Year as last two digits, but with leading zero for years less than 10.
|
514 |
// yyyy Year represented hy full four digits.
|
515 |
// gg Period/era string. The function uses the CAL_SERASTRING value associated
|
516 |
// with the specified locale. This element is ignored if the date to be formatted
|
517 |
// does not have an associated era or period string.
|
518 |
// For example, to get the date string "Wed, Aug 31 94"
|
519 |
// use the following picture string: "ddd","MMM dd yy"
|
520 |
|
521 |
External_function vWin32_GetDateFormat "GetDateFormatA" Kernel32.Dll ;
|
522 |
Dword LCID Dword dwFlags Pointer lpsSystemTime Pointer lpFormat Pointer lpDateStr ; |
523 |
Integer cchDate Returns Integer |
524 |
|
525 |
Define LOCALE_NOUSEROVERRIDE For |CI$80000000 // do not use user overrides |
526 |
Define TIME_NOMIHUTESORSECONDS For |CI$0000000l // do not use minutes or seconds |
527 |
Define TIME_NOSECONDS For |CI$00000002 // do not use seconds |
528 |
Define TIME_NOTIMEMARKER For |CI$00000004 // do not use time marker |
529 |
Define TIME_FORCE24HOURFORMAT For |CI$00000008 // always use 24 hour format |
530 |
|
531 |
// Date Flags for GetDateFormatW.
|
532 |
//
|
533 |
Define DATE_SHORTDATE For |CI$0000000l // use short date picture |
534 |
Define DATE_LONGDATE For |CI$00000002 // use long date picture |
535 |
Define DATE_USE_ALT_CALENDAR For |CI$00000004 // use alternate calendar (if any) |
536 |
|
537 |
|
538 |
External_function vWin32_SetLastError "SetLastError" Kernel32.Dll Dword dwLastError Returns Integer
|
539 |
|
540 |
|
541 |
// **WvA: 20-02-2004
|
542 |
// While i was testing the format capabilities i stumbled over a very
|
543 |
// weird problem where it looks like that the integer value gets somehow translated
|
544 |
// incorrectly into an unsigned integer.
|
545 |
// I don't have the time to dive into this.. so added a workaround (and removed it again)
|
546 |
// It does smell a bit fishy though
|
547 |
// Tested it with the same results on both VDF7 and VDF9.1
|
548 |
|
549 |
Define SHFMT_ID_DEFAULT For |CI$0000FFFF // The default format ID |
550 |
Define SHFMT_OPT_DEFAULT For |CI$00000000 // The default "Quick Format" option. |
551 |
Define SHFMT_OPT_FULL For |CI$00000001 // Deselects the "Quick Format" option, providing a full format instead. This is useful when an unformatted disk is detected. |
552 |
Define SHFMT_OPT_SYSONLY For |CI$00000002 // Selects the "Create an MS-DOS startup disk" option, creating a system boot disk. |
553 |
|
554 |
// Possible errors that can be returned by the shellformat function
|
555 |
Define SHFMT_ERROR For (|CI$FFFFFFFF+1) // An error occurred during the last format or no drive parameter passed. This does not indicate that the disk is unformatable. |
556 |
Define SHFMT_CANCEL For (|CI$FFFFFFFE+1) // The last format was canceled. |
557 |
Define SHFMT_NOFORMAT For (|CI$FFFFFFFD+1) // The drive cannot be formatted. |
558 |
|
559 |
|
560 |
// Courtesy Of Steve Walter,
|
561 |
// USA Software, Inc
|
562 |
// Format a disk
|
563 |
// Called By: Move (vWin32_ShFormatDrive(hWnd,0,$FFFF,1)) To dwReturn
|
564 |
External_function vWin32_ShFormatDrive "SHFormatDrive" shell32.dll Handle hWnd ;
|
565 |
Integer iDrive Integer iFormatID Integer iOptions Returns DWORD |
566 |
|
567 |
// Michael Mullan. I Wanted to create all the folders in one statement...
|
568 |
|
569 |
// SHCreateDirectoryEx
|
570 |
|
571 |
// Note This function is available through Microsoft Windows XP Service Pack 2 (SP2) and Windows Server 2003.
|
572 |
// It might be altered or unavailable in subsequent versions of Windows.
|
573 |
//
|
574 |
// This function creates a file system folder whose fully qualified path is given by pszPath. If one or more
|
575 |
// of the intermediate folders do not exist, they are created as well. SHCreateDirectoryEx also verifies that
|
576 |
// the files are visible. If they are not visible, expect one of the following:
|
577 |
//
|
578 |
// * If hwnd is set to a valid window handle, a message box is displayed warning the user that he or she
|
579 |
// might not be able to access the files. If the user chooses not to proceed, the function returns
|
580 |
// ERROR_CANCELLED.
|
581 |
// * If hwnd is set to NULL, no user interface is displayed and the function returns ERROR_CANCELLED.
|
582 |
|
583 |
// Returns ERROR_SUCCESS if successful. If the operation fails, other error codes can be returned,
|
584 |
// including those listed here. For values not specifically listed, see System Error Codes.
|
585 |
// 161 ERROR_BAD_PATHNAME The pszPath parameter was set to a relative path.
|
586 |
// 206 ERROR_FILENAME_EXCED_RANGE The path pointed to by pszPath is too long.
|
587 |
// 3 ERROR_PATH_NOT_FOUND The system cannot find the path pointed to by pszPath. The path may contain an invalid entry.
|
588 |
// 80 ERROR_FILE_EXISTS The directory exists.
|
589 |
// 183 ERROR_ALREADY_EXISTS The directory exists.
|
590 |
// 1223 ERROR_CANCELLED The user canceled the operation.
|
591 |
|
592 |
// int SHCreateDirectoryEx(
|
593 |
// HWND hwnd,
|
594 |
// LPCTSTR pszPath,
|
595 |
// const SECURITY_ATTRIBUTES *psa
|
596 |
// );
|
597 |
|
598 |
External_function vWin32_SHCreateDirectoryEx "SHCreateDirectoryExA" shell32.dll Handle hWnd;
|
599 |
pointer pszPath Pointer lpSecurity_Attributes Returns Integer |
600 |
|
601 |
#IFNDEF INVALID_HANDLE_VALUE
|
602 |
Define INVALID_HANDLE_VALUE for -1 |
603 |
#ENDIF
|