📄 unautils.pas
字号:
BIF_VALIDATE = $0020; { insist on valid result (or CANCEL) }
{$EXTERNALSYM BIF_NEWDIALOGSTYLE}
BIF_NEWDIALOGSTYLE = $0040;
{$EXTERNALSYM BIF_BROWSEINCLUDEURLS}
BIF_BROWSEINCLUDEURLS = $0080;
{$EXTERNALSYM BIF_BROWSEFORCOMPUTER}
BIF_BROWSEFORCOMPUTER = $1000; { Browsing for Computers. }
{$EXTERNALSYM BIF_BROWSEFORPRINTER}
BIF_BROWSEFORPRINTER = $2000; { Browsing for Printers }
{$EXTERNALSYM BIF_BROWSEINCLUDEFILES}
BIF_BROWSEINCLUDEFILES = $4000; { Browsing for Everything }
{$EXTERNALSYM BIF_SHAREABLE}
BIF_SHAREABLE = $8000;
{$EXTERNALSYM BIF_USENEWUI}
BIF_USENEWUI = BIF_NEWDIALOGSTYLE or BIF_EDITBOX;
{ message from browser }
{$EXTERNALSYM BFFM_INITIALIZED}
BFFM_INITIALIZED = 1;
{$EXTERNALSYM BFFM_SELCHANGED}
BFFM_SELCHANGED = 2;
{$EXTERNALSYM BFFM_VALIDATEFAILEDA}
BFFM_VALIDATEFAILEDA = 3; { lParam:szPath ret:1(cont),0(EndDialog) }
{$EXTERNALSYM BFFM_VALIDATEFAILEDW}
BFFM_VALIDATEFAILEDW = 4; { lParam:wzPath ret:1(cont),0(EndDialog) }
{ messages to browser }
{$EXTERNALSYM WM_USER}
WM_USER = $0400;
{$EXTERNALSYM BFFM_SETSTATUSTEXTA}
BFFM_SETSTATUSTEXTA = WM_USER + 100;
{$EXTERNALSYM BFFM_ENABLEOK}
BFFM_ENABLEOK = WM_USER + 101;
{$EXTERNALSYM BFFM_SETSELECTIONA}
BFFM_SETSELECTIONA = WM_USER + 102;
{$EXTERNALSYM BFFM_SETSELECTIONW}
BFFM_SETSELECTIONW = WM_USER + 103;
{$EXTERNALSYM BFFM_SETSTATUSTEXTW}
BFFM_SETSTATUSTEXTW = WM_USER + 104;
{$EXTERNALSYM BFFM_VALIDATEFAILED}
BFFM_VALIDATEFAILED = BFFM_VALIDATEFAILEDA;
{$EXTERNALSYM BFFM_SETSTATUSTEXT}
BFFM_SETSTATUSTEXT = BFFM_SETSTATUSTEXTA;
{$EXTERNALSYM BFFM_SETSELECTION}
BFFM_SETSELECTION = BFFM_SETSELECTIONA;
type
{ TSHItemID -- Item ID }
PSHItemID = ^TSHItemID;
{$EXTERNALSYM _SHITEMID}
_SHITEMID = record
cb: Word; { Size of the ID (including cb itself) }
abID: array[0..0] of Byte; { The item ID (variable length) }
end;
TSHItemID = _SHITEMID;
{$EXTERNALSYM SHITEMID}
SHITEMID = _SHITEMID;
{ TItemIDList -- List if item IDs (combined with 0-terminator) }
PItemIDList = ^TItemIDList;
{$EXTERNALSYM _ITEMIDLIST}
_ITEMIDLIST = record
mkid: TSHItemID;
end;
TItemIDList = _ITEMIDLIST;
{$EXTERNALSYM ITEMIDLIST}
ITEMIDLIST = _ITEMIDLIST;
{$EXTERNALSYM BFFCALLBACK}
BFFCALLBACK = function(wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): integer stdcall;
TFNBFFCallBack = type BFFCALLBACK;
//
PBrowseInfoA = ^TBrowseInfoA;
PBrowseInfoW = ^TBrowseInfoW;
PBrowseInfo = PBrowseInfoA;
{$EXTERNALSYM _browseinfoA}
_browseinfoA = record
hwndOwner: HWND;
pidlRoot: PItemIDList;
pszDisplayName: PAnsiChar; { Return display name of item selected. }
lpszTitle: PAnsiChar; { text to go in the banner over the tree. }
ulFlags: UINT; { Flags that control the return stuff }
lpfn: TFNBFFCallBack;
lParam: LPARAM; { extra info that's passed back in callbacks }
iImage: Integer; { output var: where to return the Image index. }
end;
{$EXTERNALSYM _browseinfoW}
_browseinfoW = record
hwndOwner: HWND;
pidlRoot: PItemIDList;
pszDisplayName: PWideChar; { Return display name of item selected. }
lpszTitle: PWideChar; { text to go in the banner over the tree. }
ulFlags: UINT; { Flags that control the return stuff }
lpfn: TFNBFFCallBack;
lParam: LPARAM; { extra info that's passed back in callbacks }
iImage: Integer; { output var: where to return the Image index. }
end;
{$EXTERNALSYM _browseinfo}
_browseinfo = _browseinfoA;
TBrowseInfoA = _browseinfoA;
TBrowseInfoW = _browseinfoW;
TBrowseInfo = TBrowseInfoA;
{$EXTERNALSYM BROWSEINFOA}
BROWSEINFOA = _browseinfoA;
{$EXTERNALSYM BROWSEINFOW}
BROWSEINFOW = _browseinfoW;
{$EXTERNALSYM BROWSEINFO}
BROWSEINFO = BROWSEINFOA;
{ record for returning strings from IShellFolder member functions }
PSTRRet = ^TStrRet;
{$EXTERNALSYM _STRRET}
_STRRET = record
uType: UINT; { One of the STRRET_* values }
case Integer of
0: (pOleStr: LPWSTR); { must be freed by caller of GetDisplayNameOf }
1: (pStr: LPSTR); { NOT USED }
2: (uOffset: UINT); { Offset into SHITEMID (ANSI) }
3: (cStr: array[0..MAX_PATH-1] of Char); { Buffer to fill in }
end;
TStrRet = _STRRET;
{$EXTERNALSYM STRRET}
STRRET = _STRRET;
{$EXTERNALSYM IMalloc}
IMalloc = interface(IUnknown)
['{00000002-0000-0000-C000-000000000046}']
function Alloc(cb: Longint): Pointer; stdcall;
function Realloc(pv: Pointer; cb: Longint): Pointer; stdcall;
procedure Free(pv: Pointer); stdcall;
function GetSize(pv: Pointer): Longint; stdcall;
function DidAlloc(pv: Pointer): Integer; stdcall;
procedure HeapMinimize; stdcall;
end;
{$EXTERNALSYM IEnumIDList}
IEnumIDList = interface(IUnknown)
['{000214F2-0000-0000-C000-000000000046}']
function Next(celt: ULONG; out rgelt: PItemIDList; var pceltFetched: ULONG): HResult; stdcall;
function Skip(celt: ULONG): HResult; stdcall;
function Reset: HResult; stdcall;
function Clone(out ppenum: IEnumIDList): HResult; stdcall;
end;
{$EXTERNALSYM IShellFolder}
IShellFolder = interface(IUnknown)
['{000214E6-0000-0000-C000-000000000046}']
function ParseDisplayName(hwndOwner: HWND; pbcReserved: Pointer; lpszDisplayName: PWideChar; out pchEaten: ULONG; out ppidl: PItemIDList; var dwAttributes: ULONG): HResult; stdcall;
function EnumObjects(hwndOwner: HWND; grfFlags: DWORD; out EnumIDList: IEnumIDList): HResult; stdcall;
function BindToObject(pidl: PItemIDList; pbcReserved: Pointer; const riid: TGUID; out ppvOut): HResult; stdcall;
function BindToStorage(pidl: PItemIDList; pbcReserved: Pointer; const riid: TGUID; out ppvObj): HResult; stdcall;
function CompareIDs(lParam: LPARAM; pidl1, pidl2: PItemIDList): HResult; stdcall;
function CreateViewObject(hwndOwner: HWND; const riid: TGUID; out ppvOut): HResult; stdcall;
function GetAttributesOf(cidl: UINT; var apidl: PItemIDList; var rgfInOut: UINT): HResult; stdcall;
function GetUIObjectOf(hwndOwner: HWND; cidl: UINT; var apidl: PItemIDList; const riid: TGUID; prgfInOut: Pointer; out ppvOut): HResult; stdcall;
function GetDisplayNameOf(pidl: PItemIDList; uFlags: DWORD; var lpName: TStrRet): HResult; stdcall;
function SetNameOf(hwndOwner: HWND; pidl: PItemIDList; lpszName: PWideChar; uFlags: DWORD; var ppidlOut: PItemIDList): HResult; stdcall;
end;
{$EXTERNALSYM SHGetMalloc }
function SHGetMalloc(var ppMalloc: IMalloc): HResult; stdcall;
{$EXTERNALSYM SHGetDesktopFolder }
function SHGetDesktopFolder(var ppshf: IShellFolder): HResult; stdcall;
{$EXTERNALSYM SHBrowseForFolderA }
function SHBrowseForFolderA(var lpbi: TBrowseInfoA): PItemIDList; stdcall;
{$EXTERNALSYM SHBrowseForFolderW }
function SHBrowseForFolderW(var lpbi: TBrowseInfoW): PItemIDList; stdcall;
{$EXTERNALSYM SHGetPathFromIDListA}
function SHGetPathFromIDListA(pidl: PItemIDList; pszPath: PAnsiChar): BOOL; stdcall;
{$EXTERNALSYM SHGetPathFromIDListW}
function SHGetPathFromIDListW(pidl: PItemIDList; pszPath: PWideChar): BOOL; stdcall;
function guiSelectDirectory(const caption, root: wideString; var directory: wideString; handle: hWnd = 0; flags: uint = BIF_RETURNONLYFSDIRS): bool;
{DP:METHOD
Ensures you can safely add a file name to the given path. Adds '\' character to the end of path if necessary.
<BR />Exaples:
<BR />C:\temp\ => C:\temp\
<BR />C:\temp => C:\temp\
<BR />C:\ => C:\
<BR />C: => C:
<BR />C:\temp/ => C:\temp/
}
function addBackSlashW(const path: wideString): wideString;
{DP:METHOD
Returns temporary file name.
}
function getTemporaryFileName(const prefix: wideString = 'una'): wideString;
function getTempFileName(const prefix: wideString = 'una'): wideString; // same as above
const
{$EXTERNALSYM REGSTR_PATH_EXPLORER}
REGSTR_PATH_EXPLORER = 'Software\Microsoft\Windows\CurrentVersion\Explorer';
{ registry entries for special paths are kept in : }
{$EXTERNALSYM REGSTR_PATH_SPECIAL_FOLDERS}
REGSTR_PATH_SPECIAL_FOLDERS = REGSTR_PATH_EXPLORER + '\Shell Folders';
{$EXTERNALSYM CSIDL_DESKTOP}
CSIDL_DESKTOP = $0000;
{$EXTERNALSYM CSIDL_INTERNET}
CSIDL_INTERNET = $0001;
{$EXTERNALSYM CSIDL_PROGRAMS}
CSIDL_PROGRAMS = $0002;
{$EXTERNALSYM CSIDL_CONTROLS}
CSIDL_CONTROLS = $0003;
{$EXTERNALSYM CSIDL_PRINTERS}
CSIDL_PRINTERS = $0004;
{$EXTERNALSYM CSIDL_PERSONAL}
CSIDL_PERSONAL = $0005;
{$EXTERNALSYM CSIDL_FAVORITES}
CSIDL_FAVORITES = $0006;
{$EXTERNALSYM CSIDL_STARTUP}
CSIDL_STARTUP = $0007;
{$EXTERNALSYM CSIDL_RECENT}
CSIDL_RECENT = $0008;
{$EXTERNALSYM CSIDL_SENDTO}
CSIDL_SENDTO = $0009;
{$EXTERNALSYM CSIDL_BITBUCKET}
CSIDL_BITBUCKET = $000a;
{$EXTERNALSYM CSIDL_STARTMENU}
CSIDL_STARTMENU = $000b;
{$EXTERNALSYM CSIDL_DESKTOPDIRECTORY}
CSIDL_DESKTOPDIRECTORY = $0010;
{$EXTERNALSYM CSIDL_DRIVES}
CSIDL_DRIVES = $0011;
{$EXTERNALSYM CSIDL_NETWORK}
CSIDL_NETWORK = $0012;
{$EXTERNALSYM CSIDL_NETHOOD}
CSIDL_NETHOOD = $0013;
{$EXTERNALSYM CSIDL_FONTS}
CSIDL_FONTS = $0014;
{$EXTERNALSYM CSIDL_TEMPLATES}
CSIDL_TEMPLATES = $0015;
{$EXTERNALSYM CSIDL_COMMON_STARTMENU}
CSIDL_COMMON_STARTMENU = $0016;
{$EXTERNALSYM CSIDL_COMMON_PROGRAMS}
CSIDL_COMMON_PROGRAMS = $0017;
{$EXTERNALSYM CSIDL_COMMON_STARTUP}
CSIDL_COMMON_STARTUP = $0018;
{$EXTERNALSYM CSIDL_COMMON_DESKTOPDIRECTORY}
CSIDL_COMMON_DESKTOPDIRECTORY = $0019;
{$EXTERNALSYM CSIDL_APPDATA}
CSIDL_APPDATA = $001a;
{$EXTERNALSYM CSIDL_PRINTHOOD}
CSIDL_PRINTHOOD = $001b;
{$EXTERNALSYM CSIDL_LOCAL_APPDATA}
CSIDL_LOCAL_APPDATA = $001c;
{$EXTERNALSYM CSIDL_ALTSTARTUP}
CSIDL_ALTSTARTUP = $001d; // DBCS
{$EXTERNALSYM CSIDL_COMMON_ALTSTARTUP}
CSIDL_COMMON_ALTSTARTUP = $001e; // DBCS
{$EXTERNALSYM CSIDL_COMMON_FAVORITES}
CSIDL_COMMON_FAVORITES = $001f;
{$EXTERNALSYM CSIDL_INTERNET_CACHE}
CSIDL_INTERNET_CACHE = $0020;
{$EXTERNALSYM CSIDL_COOKIES}
CSIDL_COOKIES = $0021;
{$EXTERNALSYM CSIDL_HISTORY}
CSIDL_HISTORY = $0022;
{$EXTERNALSYM CSIDL_PROFILE}
CSIDL_PROFILE = $0028; { USERPROFILE }
{$EXTERNALSYM CSIDL_CONNECTIONS}
CSIDL_CONNECTIONS = $0031; { Network and Dial-up Connections }
{$EXTERNALSYM CSIDL_COMMON_MUSIC}
CSIDL_COMMON_MUSIC = $0035; { All Users\My Music }
{$EXTERNALSYM CSIDL_COMMON_PICTURES}
CSIDL_COMMON_PICTURES = $0036; { All Users\My Pictures }
{$EXTERNALSYM CSIDL_COMMON_VIDEO}
CSIDL_COMMON_VIDEO = $0037; { All Users\My Video }
{$EXTERNALSYM CSIDL_CDBURN_AREA}
CSIDL_CDBURN_AREA = $003b; { USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning }
{$EXTERNALSYM CSIDL_COMPUTERSNEARME}
CSIDL_COMPUTERSNEARME = $003d; { Computers Near Me (computered from Workgroup membership) }
{$EXTERNALSYM CSIDL_PROFILES}
CSIDL_PROFILES = $003e;
{$EXTERNALSYM CSIDL_COMMON_APPDATA}
CSIDL_COMMON_APPDATA = $0023; { All Users\Application Data }
{$EXTERNALSYM CSIDL_WINDOWS}
CSIDL_WINDOWS = $0024; { GetWindowsDirectory() }
{$EXTERNALSYM CSIDL_SYSTEM}
CSIDL_SYSTEM = $0025; { GetSystemDirectory() }
{$EXTERNALSYM CSIDL_PROGRAM_FILES}
CSIDL_PROGRAM_FILES = $0026; { C:\Program Files }
{$EXTERNALSYM CSIDL_MYPICTURES}
CSIDL_MYPICTURES = $0027; { My Pictures, new for Win2K }
{$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMON}
CSIDL_PROGRAM_FILES_COMMON = $002b; { C:\Program Files\Common }
{$EXTERNALSYM CSIDL_COMMON_DOCUMENTS}
CSIDL_COMMON_DOCUMENTS = $002e; { All Users\Documents }
{$EXTERNALSYM CSIDL_FLAG_CREATE}
CSIDL_FLAG_CREATE = $8000; { new for Win2K, or this in to force creation of folder }
{$EXTERNALSYM CSIDL_COMMON_ADMINTOOLS}
CSIDL_COMMON_ADMINTOOLS = $002f; { All Users\Start Menu\Programs\Administrative Tools }
{$EXTERNALSYM CSIDL_ADMINTOOLS}
CSIDL_ADMINTOOLS = $0030; { <user name>\Start Menu\Programs\Administrative Tools }
{$EXTERNALSYM SHGetSpecialFolderPathA }
{$EXTERNALSYM SHGetSpecialFolderPathW }
function SHGetSpecialFolderPathA(owner: HWND; lpszPath: pAnsiChar; nFolder: int; fCreate: BOOL): BOOL; stdcall;
function SHGetSpecialFolderPathW(owner: HWND; lpszPath: pWideChar; nFolder: int; fCreate: BOOL): BOOL; stdcall;
{DP:METHOD
Returns special folder path.
}
function getSpecialFolderPath(nFolder: int; owner: hWnd = 0; doCreate: bool = false): wideString;
{DP:METHOD
Returns Application Data folder path.
}
function getAppDataFolderPath(owner: hWnd = 0; doCreate: bool = false): wideString;
{DP:METHOD
Removes all files in a folder (and optionally subfolders) according to file mask specified.
All empty subfolders may be removed too, making it easy to clean up all contect of a folder.
SFONLY and omask are internal parameters and should not be changed.
}
function folderRemoveFiles(const path: wideString; includeSubfolders: bool = false; const mask: wideString = '*.*'; removeSubfoldersAsWell: bool = false; SFONLY: bool = false; const omask: wideString = ''): bool;
{DP:MEHTOD
Returns true if folder was successfully removed. Folder must not contain subfolders or files.
Use folderRemoveFiles() to remove subfolders and/or files.
}
function folderRemove(const path: wideString): bool;
// -- PARAMS --
{DP:METHOD
Returns specified (by index) command line parameter as wide string.
}
function paramStrW(index: unsigned): wideString;
{DP:MEHTOD
index means:
0 - FreeBytesAvailable
1 - TotalNumberOfBytes
2 - TotalNumberOfFreeBytes
}
function getDiskSpace(const path: wideString; index: int): int64;
// -- FORMAT CONVERSIONS --
{DP:METHOD
Converts boolean value to integer. Returns 0 if value = false and 1 otherwise.
}
function bool2int(value: bool): int;
{DP:METHOD
Converts integer value to boolean. Returns false if value = 0 and true otherwise.
}
function int2bool(value: int): bool;
{DP:METHOD
Converts boolean value to string. Returns '0' if value = false and '1' otherwise.
}
function bool2str(value: bool): string;
{DP:METHOD
Converts boolean value to string. Returns 'false' if value = false and 'true' otherwise.
}
function bool2strStr(value: bool): string;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -