
D front-end changes: - Import latest changes from dmd v2.107.0-beta.1. - Keywords like `__FILE__' are now always evaluated at the callsite. D runtime changes: - Import latest changes from druntime v2.107.0-beta.1. - Added `nameSig' field to TypeInfo_Class in object.d. Phobos changes: - Import latest changes from phobos v2.107.0-beta.1. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd bce5c1f7b5. * d-attribs.cc (build_attributes): Update for new front-end interface. * d-lang.cc (d_parse_file): Likewise. * decl.cc (DeclVisitor::visit (VarDeclaration *)): Likewise. * expr.cc (build_lambda_tree): New function. (ExprVisitor::visit (FuncExp *)): Use build_lambda_tree. (ExprVisitor::visit (SymOffExp *)): Likewise. (ExprVisitor::visit (VarExp *)): Likewise. * typeinfo.cc (create_tinfo_types): Add two ulong fields to internal TypeInfo representation. (TypeInfoVisitor::visit (TypeInfoClassDeclaration *)): Emit stub data for TypeInfo_Class.nameSig. (TypeInfoVisitor::visit (TypeInfoStructDeclaration *)): Update for new front-end interface. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime bce5c1f7b5. * src/MERGE: Merge upstream phobos e4d0dd513.
433 lines
12 KiB
D
433 lines
12 KiB
D
/**
|
|
* Windows API header module
|
|
*
|
|
* Translated from MinGW Windows headers
|
|
*
|
|
* Authors: Stewart Gordon
|
|
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
|
|
* Source: $(DRUNTIMESRC core/sys/windows/_shellapi.d)
|
|
*/
|
|
module core.sys.windows.shellapi;
|
|
version (Windows):
|
|
|
|
version (ANSI) {} else version = Unicode;
|
|
pragma(lib, "shell32");
|
|
|
|
import core.sys.windows.w32api, core.sys.windows.windef, core.sys.windows.basetyps;
|
|
|
|
enum : UINT {
|
|
ABE_LEFT,
|
|
ABE_TOP,
|
|
ABE_RIGHT,
|
|
ABE_BOTTOM // = 3
|
|
}
|
|
|
|
enum : UINT {
|
|
ABS_AUTOHIDE = 1,
|
|
ABS_ALWAYSONTOP
|
|
}
|
|
|
|
enum ULONG
|
|
SEE_MASK_CLASSNAME = 1,
|
|
SEE_MASK_CLASSKEY = 3,
|
|
SEE_MASK_IDLIST = 4,
|
|
SEE_MASK_INVOKEIDLIST = 12,
|
|
SEE_MASK_ICON = 0x000010,
|
|
SEE_MASK_HOTKEY = 0x000020,
|
|
SEE_MASK_NOCLOSEPROCESS = 0x000040,
|
|
SEE_MASK_CONNECTNETDRV = 0x000080,
|
|
SEE_MASK_FLAG_DDEWAIT = 0x000100,
|
|
SEE_MASK_DOENVSUBST = 0x000200,
|
|
SEE_MASK_FLAG_NO_UI = 0x000400,
|
|
SEE_MASK_NO_CONSOLE = 0x008000,
|
|
SEE_MASK_UNICODE = 0x010000,
|
|
SEE_MASK_ASYNCOK = 0x100000,
|
|
SEE_MASK_HMONITOR = 0x200000;
|
|
|
|
enum : DWORD {
|
|
ABM_NEW,
|
|
ABM_REMOVE,
|
|
ABM_QUERYPOS,
|
|
ABM_SETPOS,
|
|
ABM_GETSTATE,
|
|
ABM_GETTASKBARPOS,
|
|
ABM_ACTIVATE,
|
|
ABM_GETAUTOHIDEBAR,
|
|
ABM_SETAUTOHIDEBAR,
|
|
ABM_WINDOWPOSCHANGED // = 9
|
|
}
|
|
|
|
static if (_WIN32_WINNT >= 0x501) {
|
|
enum DWORD ABM_SETSTATE = 10;
|
|
}
|
|
|
|
enum : UINT {
|
|
ABN_STATECHANGE,
|
|
ABN_POSCHANGED,
|
|
ABN_FULLSCREENAPP,
|
|
ABN_WINDOWARRANGE
|
|
}
|
|
|
|
enum : DWORD {
|
|
NIM_ADD,
|
|
NIM_MODIFY,
|
|
NIM_DELETE
|
|
}
|
|
|
|
static if (_WIN32_IE >= 0x500) {
|
|
enum NOTIFYICON_VERSION = 3;
|
|
|
|
enum : DWORD {
|
|
NIM_SETFOCUS = 3,
|
|
NIM_SETVERSION
|
|
}
|
|
}
|
|
|
|
enum UINT
|
|
NIF_MESSAGE = 1,
|
|
NIF_ICON = 2,
|
|
NIF_TIP = 4,
|
|
NIF_STATE = 8;
|
|
|
|
static if (_WIN32_IE >= 0x500) {
|
|
enum UINT NIF_INFO = 0x00000010;
|
|
}
|
|
|
|
static if (_WIN32_IE >= 0x600) {
|
|
enum UINT NIF_GUID = 0x00000020;
|
|
}
|
|
|
|
static if (_WIN32_IE >= 0x500) {
|
|
enum : DWORD {
|
|
NIIF_NONE,
|
|
NIIF_INFO,
|
|
NIIF_WARNING,
|
|
NIIF_ERROR
|
|
}
|
|
}
|
|
|
|
static if (_WIN32_IE >= 0x600) {
|
|
enum : DWORD {
|
|
NIIF_ICON_MASK = 15,
|
|
NIIF_NOSOUND
|
|
}
|
|
}
|
|
|
|
enum DWORD
|
|
NIS_HIDDEN = 1,
|
|
NIS_SHAREDICON = 2;
|
|
|
|
enum HINSTANCE
|
|
SE_ERR_FNF = cast(HINSTANCE) 2,
|
|
SE_ERR_PNF = cast(HINSTANCE) 3,
|
|
SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5,
|
|
SE_ERR_OOM = cast(HINSTANCE) 8,
|
|
SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32,
|
|
SE_ERR_SHARE = cast(HINSTANCE) 26,
|
|
SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27,
|
|
SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28,
|
|
SE_ERR_DDEFAIL = cast(HINSTANCE) 29,
|
|
SE_ERR_DDEBUSY = cast(HINSTANCE) 30,
|
|
SE_ERR_NOASSOC = cast(HINSTANCE) 31;
|
|
|
|
enum : UINT {
|
|
FO_MOVE = 1,
|
|
FO_COPY,
|
|
FO_DELETE,
|
|
FO_RENAME
|
|
}
|
|
|
|
enum FILEOP_FLAGS
|
|
FOF_MULTIDESTFILES = 0x0001,
|
|
FOF_CONFIRMMOUSE = 0x0002,
|
|
FOF_SILENT = 0x0004,
|
|
FOF_RENAMEONCOLLISION = 0x0008,
|
|
FOF_NOCONFIRMATION = 0x0010,
|
|
FOF_WANTMAPPINGHANDLE = 0x0020,
|
|
FOF_ALLOWUNDO = 0x0040,
|
|
FOF_FILESONLY = 0x0080,
|
|
FOF_SIMPLEPROGRESS = 0x0100,
|
|
FOF_NOCONFIRMMKDIR = 0x0200,
|
|
FOF_NOERRORUI = 0x0400,
|
|
FOF_NOCOPYSECURITYATTRIBS = 0x0800;
|
|
|
|
// these are not documented on the MSDN site
|
|
enum {
|
|
PO_DELETE = 19,
|
|
PO_RENAME = 20,
|
|
PO_PORTCHANGE = 32,
|
|
PO_REN_PORT = 52
|
|
}
|
|
|
|
enum UINT
|
|
SHGFI_LARGEICON = 0x000000,
|
|
SHGFI_SMALLICON = 0x000001,
|
|
SHGFI_OPENICON = 0x000002,
|
|
SHGFI_SHELLICONSIZE = 0x000004,
|
|
SHGFI_PIDL = 0x000008,
|
|
SHGFI_USEFILEATTRIBUTES = 0x000010,
|
|
SHGFI_ICON = 0x000100,
|
|
SHGFI_DISPLAYNAME = 0x000200,
|
|
SHGFI_TYPENAME = 0x000400,
|
|
SHGFI_ATTRIBUTES = 0x000800,
|
|
SHGFI_ICONLOCATION = 0x001000,
|
|
SHGFI_EXETYPE = 0x002000,
|
|
SHGFI_SYSICONINDEX = 0x004000,
|
|
SHGFI_LINKOVERLAY = 0x008000,
|
|
SHGFI_SELECTED = 0x010000,
|
|
SHGFI_ATTR_SPECIFIED = 0x020000;
|
|
|
|
static if (_WIN32_IE >= 0x500) {
|
|
enum uint
|
|
SHGFI_ADDOVERLAYS = 0x000020,
|
|
SHGFI_OVERLAYINDEX = 0x000040;
|
|
}
|
|
|
|
enum SHERB_NOCONFIRMATION = 1;
|
|
enum SHERB_NOPROGRESSUI = 2;
|
|
enum SHERB_NOSOUND = 4;
|
|
|
|
alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS;
|
|
alias HDROP = HANDLE;
|
|
|
|
//align(2): // 1 in Win32, default in Win64
|
|
|
|
struct APPBARDATA {
|
|
DWORD cbSize = APPBARDATA.sizeof;
|
|
HWND hWnd;
|
|
UINT uCallbackMessage;
|
|
UINT uEdge;
|
|
RECT rc;
|
|
LPARAM lParam;
|
|
}
|
|
alias APPBARDATA* PAPPBARDATA;
|
|
|
|
struct NOTIFYICONDATAA {
|
|
DWORD cbSize = NOTIFYICONDATAA.sizeof;
|
|
HWND hWnd;
|
|
UINT uID;
|
|
UINT uFlags;
|
|
UINT uCallbackMessage;
|
|
HICON hIcon;
|
|
static if (_WIN32_IE >= 0x500) {
|
|
CHAR[128] szTip = 0;
|
|
DWORD dwState;
|
|
DWORD dwStateMask;
|
|
CHAR[256] szInfo = 0;
|
|
union {
|
|
UINT uTimeout;
|
|
UINT uVersion;
|
|
}
|
|
CHAR[64] szInfoTitle = 0;
|
|
DWORD dwInfoFlags;
|
|
} else {
|
|
CHAR[64] szTip = 0;
|
|
}
|
|
static if (_WIN32_IE >= 0x600) {
|
|
GUID guidItem;
|
|
}
|
|
}
|
|
alias NOTIFYICONDATAA* PNOTIFYICONDATAA;
|
|
|
|
struct NOTIFYICONDATAW {
|
|
DWORD cbSize = NOTIFYICONDATAW.sizeof;
|
|
HWND hWnd;
|
|
UINT uID;
|
|
UINT uFlags;
|
|
UINT uCallbackMessage;
|
|
HICON hIcon;
|
|
static if (_WIN32_IE >= 0x500) {
|
|
WCHAR[128] szTip = 0;
|
|
DWORD dwState;
|
|
DWORD dwStateMask;
|
|
WCHAR[256] szInfo = 0;
|
|
union {
|
|
UINT uTimeout;
|
|
UINT uVersion;
|
|
}
|
|
WCHAR[64] szInfoTitle = 0;
|
|
DWORD dwInfoFlags;
|
|
} else {
|
|
WCHAR[64] szTip = 0;
|
|
}
|
|
static if (_WIN32_IE >= 0x600) {
|
|
GUID guidItem;
|
|
}
|
|
}
|
|
alias NOTIFYICONDATAW* PNOTIFYICONDATAW;
|
|
|
|
struct SHELLEXECUTEINFOA {
|
|
DWORD cbSize = SHELLEXECUTEINFOA.sizeof;
|
|
ULONG fMask;
|
|
HWND hwnd;
|
|
LPCSTR lpVerb;
|
|
LPCSTR lpFile;
|
|
LPCSTR lpParameters;
|
|
LPCSTR lpDirectory;
|
|
int nShow;
|
|
HINSTANCE hInstApp;
|
|
PVOID lpIDList;
|
|
LPCSTR lpClass;
|
|
HKEY hkeyClass;
|
|
DWORD dwHotKey;
|
|
HANDLE hIcon;
|
|
HANDLE hProcess;
|
|
}
|
|
alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA;
|
|
|
|
struct SHELLEXECUTEINFOW {
|
|
DWORD cbSize = SHELLEXECUTEINFOW.sizeof;
|
|
ULONG fMask;
|
|
HWND hwnd;
|
|
LPCWSTR lpVerb;
|
|
LPCWSTR lpFile;
|
|
LPCWSTR lpParameters;
|
|
LPCWSTR lpDirectory;
|
|
int nShow;
|
|
HINSTANCE hInstApp;
|
|
PVOID lpIDList;
|
|
LPCWSTR lpClass;
|
|
HKEY hkeyClass;
|
|
DWORD dwHotKey;
|
|
HANDLE hIcon;
|
|
HANDLE hProcess;
|
|
}
|
|
alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW;
|
|
|
|
align(1) struct SHFILEOPSTRUCTA {
|
|
align(1):
|
|
HWND hwnd;
|
|
UINT wFunc;
|
|
version (Win64)
|
|
WORD _padding1;
|
|
LPCSTR pFrom;
|
|
LPCSTR pTo;
|
|
FILEOP_FLAGS fFlags;
|
|
version (Win64)
|
|
DWORD _padding2;
|
|
BOOL fAnyOperationsAborted;
|
|
PVOID hNameMappings;
|
|
LPCSTR lpszProgressTitle;
|
|
}
|
|
alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA;
|
|
|
|
align(1) struct SHFILEOPSTRUCTW {
|
|
align(1):
|
|
HWND hwnd;
|
|
UINT wFunc;
|
|
version (Win64)
|
|
DWORD _padding1;
|
|
LPCWSTR pFrom;
|
|
LPCWSTR pTo;
|
|
FILEOP_FLAGS fFlags;
|
|
version (Win64)
|
|
WORD _padding2;
|
|
BOOL fAnyOperationsAborted;
|
|
PVOID hNameMappings;
|
|
LPCWSTR lpszProgressTitle;
|
|
}
|
|
alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW;
|
|
|
|
struct SHFILEINFOA {
|
|
HICON hIcon;
|
|
int iIcon;
|
|
DWORD dwAttributes;
|
|
CHAR[MAX_PATH] szDisplayName = 0;
|
|
CHAR[80] szTypeName = 0;
|
|
}
|
|
|
|
struct SHFILEINFOW {
|
|
HICON hIcon;
|
|
int iIcon;
|
|
DWORD dwAttributes;
|
|
WCHAR[MAX_PATH] szDisplayName = 0;
|
|
WCHAR[80] szTypeName = 0;
|
|
}
|
|
|
|
align(1) struct SHQUERYRBINFO {
|
|
align(1):
|
|
DWORD cbSize = SHQUERYRBINFO.sizeof;
|
|
version (Win64)
|
|
DWORD _padding;
|
|
long i64Size;
|
|
long i64NumItems;
|
|
}
|
|
alias SHQUERYRBINFO* LPSHQUERYRBINFO;
|
|
|
|
extern (Windows) nothrow @nogc {
|
|
LPWSTR* CommandLineToArgvW(LPCWSTR, int*);
|
|
void DragAcceptFiles(HWND, BOOL);
|
|
void DragFinish(HDROP);
|
|
UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT);
|
|
UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT);
|
|
BOOL DragQueryPoint(HDROP, LPPOINT);
|
|
HICON DuplicateIcon(HINSTANCE, HICON);
|
|
HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD);
|
|
HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD);
|
|
HICON ExtractIconA(HINSTANCE, LPCSTR, UINT);
|
|
HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT);
|
|
UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT);
|
|
UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT);
|
|
HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR);
|
|
HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR);
|
|
UINT_PTR SHAppBarMessage(DWORD, PAPPBARDATA);
|
|
BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA);
|
|
BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW);
|
|
int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON);
|
|
int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON);
|
|
HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT);
|
|
HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT);
|
|
BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA);
|
|
BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW);
|
|
int SHFileOperationA(LPSHFILEOPSTRUCTA);
|
|
int SHFileOperationW(LPSHFILEOPSTRUCTW);
|
|
void SHFreeNameMappings(HANDLE);
|
|
DWORD_PTR SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT);
|
|
DWORD_PTR SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT);
|
|
HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO);
|
|
HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO);
|
|
HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD);
|
|
HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD);
|
|
}
|
|
|
|
version (Unicode) {
|
|
alias NOTIFYICONDATAW NOTIFYICONDATA;
|
|
alias SHELLEXECUTEINFOW SHELLEXECUTEINFO;
|
|
alias SHFILEOPSTRUCTW SHFILEOPSTRUCT;
|
|
alias SHFILEINFOW SHFILEINFO;
|
|
alias DragQueryFileW DragQueryFile;
|
|
alias ExtractAssociatedIconW ExtractAssociatedIcon;
|
|
alias ExtractIconW ExtractIcon;
|
|
alias ExtractIconExW ExtractIconEx;
|
|
alias FindExecutableW FindExecutable;
|
|
alias Shell_NotifyIconW Shell_NotifyIcon;
|
|
alias ShellAboutW ShellAbout;
|
|
alias ShellExecuteW ShellExecute;
|
|
alias ShellExecuteExW ShellExecuteEx;
|
|
alias SHFileOperationW SHFileOperation;
|
|
alias SHGetFileInfoW SHGetFileInfo;
|
|
alias SHQueryRecycleBinW SHQueryRecycleBin;
|
|
alias SHEmptyRecycleBinW SHEmptyRecycleBin;
|
|
} else {
|
|
alias NOTIFYICONDATAA NOTIFYICONDATA;
|
|
alias SHELLEXECUTEINFOA SHELLEXECUTEINFO;
|
|
alias SHFILEOPSTRUCTA SHFILEOPSTRUCT;
|
|
alias SHFILEINFOA SHFILEINFO;
|
|
alias DragQueryFileA DragQueryFile;
|
|
alias ExtractAssociatedIconA ExtractAssociatedIcon;
|
|
alias ExtractIconA ExtractIcon;
|
|
alias ExtractIconExA ExtractIconEx;
|
|
alias FindExecutableA FindExecutable;
|
|
alias Shell_NotifyIconA Shell_NotifyIcon;
|
|
alias ShellAboutA ShellAbout;
|
|
alias ShellExecuteA ShellExecute;
|
|
alias ShellExecuteExA ShellExecuteEx;
|
|
alias SHFileOperationA SHFileOperation;
|
|
alias SHGetFileInfoA SHGetFileInfo;
|
|
alias SHQueryRecycleBinA SHQueryRecycleBin;
|
|
alias SHEmptyRecycleBinA SHEmptyRecycleBin;
|
|
}
|
|
|
|
alias NOTIFYICONDATA* PNOTIFYICONDATA;
|
|
alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO;
|
|
alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT;
|