📄 shellapi.pas
字号:
SHNAMEMAPPINGW = _SHNAMEMAPPINGW;
{$EXTERNALSYM SHNAMEMAPPING}
SHNAMEMAPPING = SHNAMEMAPPINGA;
{ ShellExecute() and ShellExecuteEx() error codes }
const
{ regular WinExec() codes }
{$EXTERNALSYM SE_ERR_FNF}
SE_ERR_FNF = 2; { file not found }
{$EXTERNALSYM SE_ERR_PNF}
SE_ERR_PNF = 3; { path not found }
{$EXTERNALSYM SE_ERR_ACCESSDENIED}
SE_ERR_ACCESSDENIED = 5; { access denied }
{$EXTERNALSYM SE_ERR_OOM}
SE_ERR_OOM = 8; { out of memory }
{$EXTERNALSYM SE_ERR_DLLNOTFOUND}
SE_ERR_DLLNOTFOUND = 32;
{ error values for ShellExecute() beyond the regular WinExec() codes }
{$EXTERNALSYM SE_ERR_SHARE}
SE_ERR_SHARE = 26;
{$EXTERNALSYM SE_ERR_ASSOCINCOMPLETE}
SE_ERR_ASSOCINCOMPLETE = 27;
{$EXTERNALSYM SE_ERR_DDETIMEOUT}
SE_ERR_DDETIMEOUT = 28;
{$EXTERNALSYM SE_ERR_DDEFAIL}
SE_ERR_DDEFAIL = 29;
{$EXTERNALSYM SE_ERR_DDEBUSY}
SE_ERR_DDEBUSY = 30;
{$EXTERNALSYM SE_ERR_NOASSOC}
SE_ERR_NOASSOC = 31;
{ Note CLASSKEY overrides CLASSNAME }
{$EXTERNALSYM SEE_MASK_CLASSNAME}
SEE_MASK_CLASSNAME = $00000001;
{$EXTERNALSYM SEE_MASK_CLASSKEY}
SEE_MASK_CLASSKEY = $00000003;
{ Note INVOKEIDLIST overrides IDLIST }
{$EXTERNALSYM SEE_MASK_IDLIST}
SEE_MASK_IDLIST = $00000004;
{$EXTERNALSYM SEE_MASK_INVOKEIDLIST}
SEE_MASK_INVOKEIDLIST = $0000000c;
{$EXTERNALSYM SEE_MASK_ICON}
SEE_MASK_ICON = $00000010;
{$EXTERNALSYM SEE_MASK_HOTKEY}
SEE_MASK_HOTKEY = $00000020;
{$EXTERNALSYM SEE_MASK_NOCLOSEPROCESS}
SEE_MASK_NOCLOSEPROCESS = $00000040;
{$EXTERNALSYM SEE_MASK_CONNECTNETDRV}
SEE_MASK_CONNECTNETDRV = $00000080;
{$EXTERNALSYM SEE_MASK_FLAG_DDEWAIT}
SEE_MASK_FLAG_DDEWAIT = $00000100;
{$EXTERNALSYM SEE_MASK_DOENVSUBST}
SEE_MASK_DOENVSUBST = $00000200;
{$EXTERNALSYM SEE_MASK_FLAG_NO_UI}
SEE_MASK_FLAG_NO_UI = $00000400;
{$EXTERNALSYM SEE_MASK_UNICODE}
SEE_MASK_UNICODE = $00010000; // !!! changed from previous SDK (was $00004000)
{$EXTERNALSYM SEE_MASK_NO_CONSOLE}
SEE_MASK_NO_CONSOLE = $00008000;
{$EXTERNALSYM SEE_MASK_ASYNCOK}
SEE_MASK_ASYNCOK = $00100000;
type
PShellExecuteInfoA = ^TShellExecuteInfoA;
PShellExecuteInfoW = ^TShellExecuteInfoW;
PShellExecuteInfo = PShellExecuteInfoA;
{$EXTERNALSYM _SHELLEXECUTEINFOA}
_SHELLEXECUTEINFOA = record
cbSize: DWORD;
fMask: ULONG;
Wnd: HWND;
lpVerb: PAnsiChar;
lpFile: PAnsiChar;
lpParameters: PAnsiChar;
lpDirectory: PAnsiChar;
nShow: Integer;
hInstApp: HINST;
{ Optional fields }
lpIDList: Pointer;
lpClass: PAnsiChar;
hkeyClass: HKEY;
dwHotKey: DWORD;
hIcon: THandle;
hProcess: THandle;
end;
{$EXTERNALSYM _SHELLEXECUTEINFOW}
_SHELLEXECUTEINFOW = record
cbSize: DWORD;
fMask: ULONG;
Wnd: HWND;
lpVerb: PWideChar;
lpFile: PWideChar;
lpParameters: PWideChar;
lpDirectory: PWideChar;
nShow: Integer;
hInstApp: HINST;
{ Optional fields }
lpIDList: Pointer;
lpClass: PWideChar;
hkeyClass: HKEY;
dwHotKey: DWORD;
hIcon: THandle;
hProcess: THandle;
end;
{$EXTERNALSYM _SHELLEXECUTEINFO}
_SHELLEXECUTEINFO = _SHELLEXECUTEINFOA;
TShellExecuteInfoA = _SHELLEXECUTEINFOA;
TShellExecuteInfoW = _SHELLEXECUTEINFOW;
TShellExecuteInfo = TShellExecuteInfoA;
{$EXTERNALSYM SHELLEXECUTEINFOA}
SHELLEXECUTEINFOA = _SHELLEXECUTEINFOA;
{$EXTERNALSYM SHELLEXECUTEINFOW}
SHELLEXECUTEINFOW = _SHELLEXECUTEINFOW;
{$EXTERNALSYM SHELLEXECUTEINFO}
SHELLEXECUTEINFO = SHELLEXECUTEINFOA;
{$EXTERNALSYM ShellExecuteEx}
function ShellExecuteEx(lpExecInfo: PShellExecuteInfo):BOOL; stdcall;
{$EXTERNALSYM ShellExecuteExA}
function ShellExecuteExA(lpExecInfo: PShellExecuteInfoA):BOOL; stdcall;
{$EXTERNALSYM ShellExecuteExW}
function ShellExecuteExW(lpExecInfo: PShellExecuteInfoW):BOOL; stdcall;
{ Tray notification definitions }
type
PNotifyIconDataA = ^TNotifyIconDataA;
PNotifyIconDataW = ^TNotifyIconDataW;
PNotifyIconData = PNotifyIconDataA;
{$EXTERNALSYM _NOTIFYICONDATAA}
_NOTIFYICONDATAA = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of AnsiChar;
end;
{$EXTERNALSYM _NOTIFYICONDATAW}
_NOTIFYICONDATAW = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of WideChar;
end;
{$EXTERNALSYM _NOTIFYICONDATA}
_NOTIFYICONDATA = _NOTIFYICONDATAA;
TNotifyIconDataA = _NOTIFYICONDATAA;
TNotifyIconDataW = _NOTIFYICONDATAW;
TNotifyIconData = TNotifyIconDataA;
{$EXTERNALSYM NOTIFYICONDATAA}
NOTIFYICONDATAA = _NOTIFYICONDATAA;
{$EXTERNALSYM NOTIFYICONDATAW}
NOTIFYICONDATAW = _NOTIFYICONDATAW;
{$EXTERNALSYM NOTIFYICONDATA}
NOTIFYICONDATA = NOTIFYICONDATAA;
const
{$EXTERNALSYM NIM_ADD}
NIM_ADD = $00000000;
{$EXTERNALSYM NIM_MODIFY}
NIM_MODIFY = $00000001;
{$EXTERNALSYM NIM_DELETE}
NIM_DELETE = $00000002;
{$EXTERNALSYM NIF_MESSAGE}
NIF_MESSAGE = $00000001;
{$EXTERNALSYM NIF_ICON}
NIF_ICON = $00000002;
{$EXTERNALSYM NIF_TIP}
NIF_TIP = $00000004;
{$EXTERNALSYM Shell_NotifyIcon}
function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL; stdcall;
{$EXTERNALSYM Shell_NotifyIconA}
function Shell_NotifyIconA(dwMessage: DWORD; lpData: PNotifyIconDataA): BOOL; stdcall;
{$EXTERNALSYM Shell_NotifyIconW}
function Shell_NotifyIconW(dwMessage: DWORD; lpData: PNotifyIconDataW): BOOL; stdcall;
{ Begin SHGetFileInfo }
(*
* The SHGetFileInfo API provides an easy way to get attributes
* for a file given a pathname.
*
* PARAMETERS
*
* pszPath file name to get info about
* dwFileAttributes file attribs, only used with SHGFI_USEFILEATTRIBUTES
* psfi place to return file info
* cbFileInfo size of structure
* uFlags flags
*
* RETURN
* TRUE if things worked
*)
type
PSHFileInfoA = ^TSHFileInfoA;
PSHFileInfoW = ^TSHFileInfoW;
PSHFileInfo = PSHFileInfoA;
{$EXTERNALSYM _SHFILEINFOA}
_SHFILEINFOA = record
hIcon: HICON; { out: icon }
iIcon: Integer; { out: icon index }
dwAttributes: DWORD; { out: SFGAO_ flags }
szDisplayName: array [0..MAX_PATH-1] of AnsiChar; { out: display name (or path) }
szTypeName: array [0..79] of AnsiChar; { out: type name }
end;
{$EXTERNALSYM _SHFILEINFOW}
_SHFILEINFOW = record
hIcon: HICON; { out: icon }
iIcon: Integer; { out: icon index }
dwAttributes: DWORD; { out: SFGAO_ flags }
szDisplayName: array [0..MAX_PATH-1] of WideChar; { out: display name (or path) }
szTypeName: array [0..79] of WideChar; { out: type name }
end;
{$EXTERNALSYM _SHFILEINFO}
_SHFILEINFO = _SHFILEINFOA;
TSHFileInfoA = _SHFILEINFOA;
TSHFileInfoW = _SHFILEINFOW;
TSHFileInfo = TSHFileInfoA;
{$EXTERNALSYM SHFILEINFOA}
SHFILEINFOA = _SHFILEINFOA;
{$EXTERNALSYM SHFILEINFOW}
SHFILEINFOW = _SHFILEINFOW;
{$EXTERNALSYM SHFILEINFO}
SHFILEINFO = SHFILEINFOA;
const
{$EXTERNALSYM SHGFI_ICON}
SHGFI_ICON = $000000100; { get icon }
{$EXTERNALSYM SHGFI_DISPLAYNAME}
SHGFI_DISPLAYNAME = $000000200; { get display name }
{$EXTERNALSYM SHGFI_TYPENAME}
SHGFI_TYPENAME = $000000400; { get type name }
{$EXTERNALSYM SHGFI_ATTRIBUTES}
SHGFI_ATTRIBUTES = $000000800; { get attributes }
{$EXTERNALSYM SHGFI_ICONLOCATION}
SHGFI_ICONLOCATION = $000001000; { get icon location }
{$EXTERNALSYM SHGFI_EXETYPE}
SHGFI_EXETYPE = $000002000; { return exe type }
{$EXTERNALSYM SHGFI_SYSICONINDEX}
SHGFI_SYSICONINDEX = $000004000; { get system icon index }
{$EXTERNALSYM SHGFI_LINKOVERLAY}
SHGFI_LINKOVERLAY = $000008000; { put a link overlay on icon }
{$EXTERNALSYM SHGFI_SELECTED}
SHGFI_SELECTED = $000010000; { show icon in selected state }
{$EXTERNALSYM SHGFI_LARGEICON}
SHGFI_LARGEICON = $000000000; { get large icon }
{$EXTERNALSYM SHGFI_SMALLICON}
SHGFI_SMALLICON = $000000001; { get small icon }
{$EXTERNALSYM SHGFI_OPENICON}
SHGFI_OPENICON = $000000002; { get open icon }
{$EXTERNALSYM SHGFI_SHELLICONSIZE}
SHGFI_SHELLICONSIZE = $000000004; { get shell size icon }
{$EXTERNALSYM SHGFI_PIDL}
SHGFI_PIDL = $000000008; { pszPath is a pidl }
{$EXTERNALSYM SHGFI_USEFILEATTRIBUTES}
SHGFI_USEFILEATTRIBUTES = $000000010; { use passed dwFileAttribute }
{$EXTERNALSYM SHGetFileInfo}
function SHGetFileInfo(pszPath: PAnsiChar; dwFileAttributes: DWORD;
var psfi: TSHFileInfo; cbFileInfo, uFlags: UINT): DWORD; stdcall;
{$EXTERNALSYM SHGetFileInfoA}
function SHGetFileInfoA(pszPath: PAnsiChar; dwFileAttributes: DWORD;
var psfi: TSHFileInfoA; cbFileInfo, uFlags: UINT): DWORD; stdcall;
{$EXTERNALSYM SHGetFileInfoW}
function SHGetFileInfoW(pszPath: PAnsiChar; dwFileAttributes: DWORD;
var psfi: TSHFileInfoW; cbFileInfo, uFlags: UINT): DWORD; stdcall;
const
{$EXTERNALSYM SHGNLI_PIDL}
SHGNLI_PIDL = $000000001; { pszLinkTo is a pidl }
{$EXTERNALSYM SHGNLI_PREFIXNAME}
SHGNLI_PREFIXNAME = $000000002; { Make name "Shortcut to xxx" }
{$EXTERNALSYM SHGNLI_NOUNIQUE}
SHGNLI_NOUNIQUE = $000000004; { don't do the unique name generation }
shell32 = 'shell32.dll';
implementation
function CommandLineToArgvW; external shell32 name 'CommandLineToArgvW';
function DoEnvironmentSubst; external shell32 name 'DoEnvironmentSubstA';
function DoEnvironmentSubstA; external shell32 name 'DoEnvironmentSubstA';
function DoEnvironmentSubstW; external shell32 name 'DoEnvironmentSubstW';
procedure DragAcceptFiles; external shell32 name 'DragAcceptFiles';
procedure DragFinish; external shell32 name 'DragFinish';
function DragQueryFile; external shell32 name 'DragQueryFileA';
function DragQueryFileA; external shell32 name 'DragQueryFileA';
function DragQueryFileW; external shell32 name 'DragQueryFileW';
function DragQueryPoint; external shell32 name 'DragQueryPoint';
function DuplicateIcon; external shell32 name 'DuplicateIcon';
function ExtractAssociatedIcon; external shell32 name 'ExtractAssociatedIconA';
function ExtractAssociatedIconA; external shell32 name 'ExtractAssociatedIconA';
function ExtractAssociatedIconW; external shell32 name 'ExtractAssociatedIconW';
function ExtractIcon; external shell32 name 'ExtractIconA';
function ExtractIconA; external shell32 name 'ExtractIconA';
function ExtractIconW; external shell32 name 'ExtractIconW';
function ExtractIconEx; external shell32 name 'ExtractIconExA';
function ExtractIconExA; external shell32 name 'ExtractIconExA';
function ExtractIconExW; external shell32 name 'ExtractIconExW';
function FindExecutable; external shell32 name 'FindExecutableA';
function FindExecutableA; external shell32 name 'FindExecutableA';
function FindExecutableW; external shell32 name 'FindExecutableW';
function SHAppBarMessage; external shell32 name 'SHAppBarMessage';
function SHFileOperation; external shell32 name 'SHFileOperationA';
function SHFileOperationA; external shell32 name 'SHFileOperationA';
function SHFileOperationW; external shell32 name 'SHFileOperationW';
procedure SHFreeNameMappings; external shell32 name 'SHFreeNameMappings';
function SHGetFileInfo; external shell32 name 'SHGetFileInfoA';
function SHGetFileInfoA; external shell32 name 'SHGetFileInfoA';
function SHGetFileInfoW; external shell32 name 'SHGetFileInfoW';
function ShellAbout; external shell32 name 'ShellAboutA';
function ShellAboutA; external shell32 name 'ShellAboutA';
function ShellAboutW; external shell32 name 'ShellAboutW';
function ShellExecute; external shell32 name 'ShellExecuteA';
function ShellExecuteA; external shell32 name 'ShellExecuteA';
function ShellExecuteW; external shell32 name 'ShellExecuteW';
function ShellExecuteEx; external shell32 name 'ShellExecuteExA';
function ShellExecuteExA; external shell32 name 'ShellExecuteExA';
function ShellExecuteExW; external shell32 name 'ShellExecuteExW';
function Shell_NotifyIcon; external shell32 name 'Shell_NotifyIconA';
function Shell_NotifyIconA; external shell32 name 'Shell_NotifyIconA';
function Shell_NotifyIconW; external shell32 name 'Shell_NotifyIconW';
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -