📄 shellapi.pas
字号:
{*******************************************************}
{ }
{ Borland Delphi Run-time Library }
{ Win32 Shell API Interface Unit }
{ }
{ Copyright (c) 1985-1999, Microsoft Corporation }
{ }
{ Translator: Borland Software Corporation }
{ }
{*******************************************************}
unit ShellAPI;
{$WEAKPACKAGEUNIT}
interface
uses Windows;
(*$HPPEMIT '#include <shellapi.h>'*)
type
{$EXTERNALSYM HDROP}
HDROP = Longint;
PPWideChar = ^PWideChar;
{$EXTERNALSYM DragQueryFile}
function DragQueryFile(Drop: HDROP; FileIndex: UINT; FileName: PChar; cb: UINT): UINT; stdcall;
{$EXTERNALSYM DragQueryFileA}
function DragQueryFileA(Drop: HDROP; FileIndex: UINT; FileName: PAnsiChar; cb: UINT): UINT; stdcall;
{$EXTERNALSYM DragQueryFileW}
function DragQueryFileW(Drop: HDROP; FileIndex: UINT; FileName: PWideChar; cb: UINT): UINT; stdcall;
{$EXTERNALSYM DragQueryPoint}
function DragQueryPoint(Drop: HDROP; var Point: TPoint): BOOL; stdcall;
{$EXTERNALSYM DragFinish}
procedure DragFinish(Drop: HDROP); stdcall;
{$EXTERNALSYM DragAcceptFiles}
procedure DragAcceptFiles(Wnd: HWND; Accept: BOOL); stdcall;
{$EXTERNALSYM ShellExecute}
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
Directory: PChar; ShowCmd: Integer): HINST; stdcall;
{$EXTERNALSYM ShellExecuteA}
function ShellExecuteA(hWnd: HWND; Operation, FileName, Parameters,
Directory: PAnsiChar; ShowCmd: Integer): HINST; stdcall;
{$EXTERNALSYM ShellExecuteW}
function ShellExecuteW(hWnd: HWND; Operation, FileName, Parameters,
Directory: PWideChar; ShowCmd: Integer): HINST; stdcall;
{$EXTERNALSYM FindExecutable}
function FindExecutable(FileName, Directory: PChar; Result: PChar): HINST; stdcall;
{$EXTERNALSYM FindExecutableA}
function FindExecutableA(FileName, Directory: PAnsiChar; Result: PAnsiChar): HINST; stdcall;
{$EXTERNALSYM FindExecutableW}
function FindExecutableW(FileName, Directory: PWideChar; Result: PWideChar): HINST; stdcall;
{$EXTERNALSYM CommandLineToArgvW}
function CommandLineToArgvW(lpCmdLine: LPCWSTR; var pNumArgs: Integer): PPWideChar; stdcall;
{$EXTERNALSYM ShellAbout}
function ShellAbout(Wnd: HWND; szApp, szOtherStuff: PChar; Icon: HICON): Integer; stdcall;
{$EXTERNALSYM ShellAboutA}
function ShellAboutA(Wnd: HWND; szApp, szOtherStuff: PAnsiChar; Icon: HICON): Integer; stdcall;
{$EXTERNALSYM ShellAboutW}
function ShellAboutW(Wnd: HWND; szApp, szOtherStuff: PWideChar; Icon: HICON): Integer; stdcall;
{$EXTERNALSYM DuplicateIcon}
function DuplicateIcon(hInst: HINST; Icon: HICON): HICON; stdcall;
{$EXTERNALSYM ExtractAssociatedIcon}
function ExtractAssociatedIcon(hInst: HINST; lpIconPath: PChar;
var lpiIcon: Word): HICON; stdcall;
{$EXTERNALSYM ExtractAssociatedIconA}
function ExtractAssociatedIconA(hInst: HINST; lpIconPath: PAnsiChar;
var lpiIcon: Word): HICON; stdcall;
{$EXTERNALSYM ExtractAssociatedIconW}
function ExtractAssociatedIconW(hInst: HINST; lpIconPath: PWideChar;
var lpiIcon: Word): HICON; stdcall;
{$EXTERNALSYM ExtractIcon}
function ExtractIcon(hInst: HINST; lpszExeFileName: PChar;
nIconIndex: UINT): HICON; stdcall;
{$EXTERNALSYM ExtractIconA}
function ExtractIconA(hInst: HINST; lpszExeFileName: PAnsiChar;
nIconIndex: UINT): HICON; stdcall;
{$EXTERNALSYM ExtractIconW}
function ExtractIconW(hInst: HINST; lpszExeFileName: PWideChar;
nIconIndex: UINT): HICON; stdcall;
type
PDragInfoA = ^_DRAGINFOA;
PDragInfoW = ^_DRAGINFOW;
PDragInfo = PDragInfoA;
_DRAGINFOA = record
uSize: UINT; { init with SizeOf(DRAGINFO) }
pt: TPoint;
fNC: BOOL;
lpFileList: PAnsiChar;
grfKeyState: DWORD;
end;
TDragInfoA = _DRAGINFOA;
LPDRAGINFOA = PDragInfoA;
_DRAGINFOW = record
uSize: UINT; { init with SizeOf(DRAGINFO) }
pt: TPoint;
fNC: BOOL;
lpFileList: PWideChar;
grfKeyState: DWORD;
end;
TDragInfoW = _DRAGINFOW;
LPDRAGINFOW = PDragInfoW;
_DRAGINFO = _DRAGINFOA;
const
{ AppBar stuff }
{$EXTERNALSYM ABM_NEW}
ABM_NEW = $00000000;
{$EXTERNALSYM ABM_REMOVE}
ABM_REMOVE = $00000001;
{$EXTERNALSYM ABM_QUERYPOS}
ABM_QUERYPOS = $00000002;
{$EXTERNALSYM ABM_SETPOS}
ABM_SETPOS = $00000003;
{$EXTERNALSYM ABM_GETSTATE}
ABM_GETSTATE = $00000004;
{$EXTERNALSYM ABM_GETTASKBARPOS}
ABM_GETTASKBARPOS = $00000005;
{$EXTERNALSYM ABM_ACTIVATE}
ABM_ACTIVATE = $00000006; { lParam = True/False means activate/deactivate }
{$EXTERNALSYM ABM_GETAUTOHIDEBAR}
ABM_GETAUTOHIDEBAR = $00000007;
{$EXTERNALSYM ABM_SETAUTOHIDEBAR}
ABM_SETAUTOHIDEBAR = $00000008; { this can fail at any time. MUST check the result
lParam = TRUE/FALSE Set/Unset
uEdge = what edge }
{$EXTERNALSYM ABM_WINDOWPOSCHANGED}
ABM_WINDOWPOSCHANGED = $0000009;
{ these are put in the wparam of callback messages }
{$EXTERNALSYM ABN_STATECHANGE}
ABN_STATECHANGE = $0000000;
{$EXTERNALSYM ABN_POSCHANGED}
ABN_POSCHANGED = $0000001;
{$EXTERNALSYM ABN_FULLSCREENAPP}
ABN_FULLSCREENAPP = $0000002;
{$EXTERNALSYM ABN_WINDOWARRANGE}
ABN_WINDOWARRANGE = $0000003; { lParam = True means hide }
{ flags for get state }
{$EXTERNALSYM ABS_AUTOHIDE}
ABS_AUTOHIDE = $0000001;
{$EXTERNALSYM ABS_ALWAYSONTOP}
ABS_ALWAYSONTOP = $0000002;
{$EXTERNALSYM ABE_LEFT}
ABE_LEFT = 0;
{$EXTERNALSYM ABE_TOP}
ABE_TOP = 1;
{$EXTERNALSYM ABE_RIGHT}
ABE_RIGHT = 2;
{$EXTERNALSYM ABE_BOTTOM}
ABE_BOTTOM = 3;
type
PAppBarData = ^TAppBarData;
{$EXTERNALSYM _AppBarData}
_AppBarData = record
cbSize: DWORD;
hWnd: HWND;
uCallbackMessage: UINT;
uEdge: UINT;
rc: TRect;
lParam: LPARAM; { message specific }
end;
TAppBarData = _AppBarData;
{$EXTERNALSYM APPBARDATA}
APPBARDATA = _AppBarData;
{$EXTERNALSYM SHAppBarMessage}
function SHAppBarMessage(dwMessage: DWORD; var pData: TAppBarData): UINT; stdcall;
{$EXTERNALSYM DoEnvironmentSubst}
function DoEnvironmentSubst(szString: PChar; cbString: UINT): DWORD; stdcall;
{$EXTERNALSYM DoEnvironmentSubstA}
function DoEnvironmentSubstA(szString: PAnsiChar; cbString: UINT): DWORD; stdcall;
{$EXTERNALSYM DoEnvironmentSubstW}
function DoEnvironmentSubstW(szString: PWideChar; cbString: UINT): DWORD; stdcall;
{$EXTERNALSYM ExtractIconEx}
function ExtractIconEx(lpszFile: PChar; nIconIndex: Integer;
var phiconLarge, phiconSmall: HICON; nIcons: UINT): UINT; stdcall;
{$EXTERNALSYM ExtractIconExA}
function ExtractIconExA(lpszFile: PAnsiChar; nIconIndex: Integer;
var phiconLarge, phiconSmall: HICON; nIcons: UINT): UINT; stdcall;
{$EXTERNALSYM ExtractIconExW}
function ExtractIconExW(lpszFile: PWideChar; nIconIndex: Integer;
var phiconLarge, phiconSmall: HICON; nIcons: UINT): UINT; stdcall;
{ Shell File Operations }
const
{$EXTERNALSYM FO_MOVE}
FO_MOVE = $0001;
{$EXTERNALSYM FO_COPY}
FO_COPY = $0002;
{$EXTERNALSYM FO_DELETE}
FO_DELETE = $0003;
{$EXTERNALSYM FO_RENAME}
FO_RENAME = $0004;
{$EXTERNALSYM FOF_MULTIDESTFILES}
FOF_MULTIDESTFILES = $0001;
{$EXTERNALSYM FOF_CONFIRMMOUSE}
FOF_CONFIRMMOUSE = $0002;
{$EXTERNALSYM FOF_SILENT}
FOF_SILENT = $0004; { don't create progress/report }
{$EXTERNALSYM FOF_RENAMEONCOLLISION}
FOF_RENAMEONCOLLISION = $0008;
{$EXTERNALSYM FOF_NOCONFIRMATION}
FOF_NOCONFIRMATION = $0010; { Don't prompt the user. }
{$EXTERNALSYM FOF_WANTMAPPINGHANDLE}
FOF_WANTMAPPINGHANDLE = $0020; { Fill in SHFILEOPSTRUCT.hNameMappings
Must be freed using SHFreeNameMappings }
{$EXTERNALSYM FOF_ALLOWUNDO}
FOF_ALLOWUNDO = $0040;
{$EXTERNALSYM FOF_FILESONLY}
FOF_FILESONLY = $0080; { on *.*, do only files }
{$EXTERNALSYM FOF_SIMPLEPROGRESS}
FOF_SIMPLEPROGRESS = $0100; { means don't show names of files }
{$EXTERNALSYM FOF_NOCONFIRMMKDIR}
FOF_NOCONFIRMMKDIR = $0200; { don't confirm making any needed dirs }
{$EXTERNALSYM FOF_NOERRORUI}
FOF_NOERRORUI = $0400; { don't put up error UI }
type
{$EXTERNALSYM FILEOP_FLAGS}
FILEOP_FLAGS = Word;
const
{$EXTERNALSYM PO_DELETE}
PO_DELETE = $0013; { printer is being deleted }
{$EXTERNALSYM PO_RENAME}
PO_RENAME = $0014; { printer is being renamed }
{$EXTERNALSYM PO_PORTCHANGE}
PO_PORTCHANGE = $0020; { port this printer connected to is being changed
if this id is set, the strings received by
the copyhook are a doubly-null terminated
list of strings. The first is the printer
name and the second is the printer port. }
{$EXTERNALSYM PO_REN_PORT}
PO_REN_PORT = $0034; { PO_RENAME and PO_PORTCHANGE at same time. }
{ no POF_ flags currently defined }
type
{$EXTERNALSYM PRINTEROP_FLAGS}
PRINTEROP_FLAGS = Word;
{ implicit parameters are:
if pFrom or pTo are unqualified names the current directories are
taken from the global current drive/directory settings managed
by Get/SetCurrentDrive/Directory
the global confirmation settings }
PSHFileOpStructA = ^TSHFileOpStructA;
PSHFileOpStructW = ^TSHFileOpStructW;
PSHFileOpStruct = PSHFileOpStructA;
{$EXTERNALSYM _SHFILEOPSTRUCTA}
_SHFILEOPSTRUCTA = packed record
Wnd: HWND;
wFunc: UINT;
pFrom: PAnsiChar;
pTo: PAnsiChar;
fFlags: FILEOP_FLAGS;
fAnyOperationsAborted: BOOL;
hNameMappings: Pointer;
lpszProgressTitle: PAnsiChar; { only used if FOF_SIMPLEPROGRESS }
end;
{$EXTERNALSYM _SHFILEOPSTRUCTW}
_SHFILEOPSTRUCTW = packed record
Wnd: HWND;
wFunc: UINT;
pFrom: PWideChar;
pTo: PWideChar;
fFlags: FILEOP_FLAGS;
fAnyOperationsAborted: BOOL;
hNameMappings: Pointer;
lpszProgressTitle: PWideChar; { only used if FOF_SIMPLEPROGRESS }
end;
{$EXTERNALSYM _SHFILEOPSTRUCT}
_SHFILEOPSTRUCT = _SHFILEOPSTRUCTA;
TSHFileOpStructA = _SHFILEOPSTRUCTA;
TSHFileOpStructW = _SHFILEOPSTRUCTW;
TSHFileOpStruct = TSHFileOpStructA;
{$EXTERNALSYM SHFILEOPSTRUCTA}
SHFILEOPSTRUCTA = _SHFILEOPSTRUCTA;
{$EXTERNALSYM SHFILEOPSTRUCTW}
SHFILEOPSTRUCTW = _SHFILEOPSTRUCTW;
{$EXTERNALSYM SHFILEOPSTRUCT}
SHFILEOPSTRUCT = SHFILEOPSTRUCTA;
{$EXTERNALSYM SHFileOperation}
function SHFileOperation(const lpFileOp: TSHFileOpStruct): Integer; stdcall;
{$EXTERNALSYM SHFileOperationA}
function SHFileOperationA(const lpFileOp: TSHFileOpStructA): Integer; stdcall;
{$EXTERNALSYM SHFileOperationW}
function SHFileOperationW(const lpFileOp: TSHFileOpStructW): Integer; stdcall;
{$EXTERNALSYM SHFreeNameMappings}
procedure SHFreeNameMappings(hNameMappings: THandle); stdcall;
type
PSHNameMappingA = ^TSHNameMappingA;
PSHNameMappingW = ^TSHNameMappingW;
PSHNameMapping = PSHNameMappingA;
{$EXTERNALSYM _SHNAMEMAPPINGA}
_SHNAMEMAPPINGA = record
pszOldPath: PAnsiChar;
pszNewPath: PAnsiChar;
cchOldPath: Integer;
cchNewPath: Integer;
end;
{$EXTERNALSYM _SHNAMEMAPPINGW}
_SHNAMEMAPPINGW = record
pszOldPath: PWideChar;
pszNewPath: PWideChar;
cchOldPath: Integer;
cchNewPath: Integer;
end;
{$EXTERNALSYM _SHNAMEMAPPING}
_SHNAMEMAPPING = _SHNAMEMAPPINGA;
TSHNameMappingA = _SHNAMEMAPPINGA;
TSHNameMappingW = _SHNAMEMAPPINGW;
TSHNameMapping = TSHNameMappingA;
{$EXTERNALSYM SHNAMEMAPPINGA}
SHNAMEMAPPINGA = _SHNAMEMAPPINGA;
{$EXTERNALSYM SHNAMEMAPPINGW}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -