Files
Odin/core/sys/windows/shell32.odin

153 lines
5.1 KiB
Odin

#+build windows
package sys_windows
foreign import shell32 "system:Shell32.lib"
@(default_calling_convention="system")
foreign shell32 {
CommandLineToArgvW :: proc(cmd_list: wstring, num_args: ^c_int) -> [^]wstring ---
ShellExecuteW :: proc(
hwnd: HWND,
lpOperation: LPCWSTR,
lpFile: LPCWSTR,
lpParameters: LPCWSTR,
lpDirectory: LPCWSTR,
nShowCmd: INT,
) -> HINSTANCE ---
ShellExecuteExW :: proc(pExecInfo: ^SHELLEXECUTEINFOW) -> BOOL ---
SHCreateDirectoryExW :: proc(
hwnd: HWND,
pszPath: LPCWSTR,
psa: ^SECURITY_ATTRIBUTES,
) -> c_int ---
SHFileOperationW :: proc(lpFileOp: LPSHFILEOPSTRUCTW) -> c_int ---
SHGetFolderPathW :: proc(hwnd: HWND, csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszPath: LPWSTR) -> HRESULT ---
SHAppBarMessage :: proc(dwMessage: DWORD, pData: PAPPBARDATA) -> UINT_PTR ---
Shell_NotifyIconW :: proc(dwMessage: DWORD, lpData: ^NOTIFYICONDATAW) -> BOOL ---
SHChangeNotify :: proc(wEventId: LONG, uFlags: UINT, dwItem1: LPCVOID, dwItem2: LPCVOID) ---
SHGetKnownFolderIDList :: proc(rfid: REFKNOWNFOLDERID, dwFlags: /* KNOWN_FOLDER_FLAG */ DWORD, hToken: HANDLE, ppidl: rawptr) -> HRESULT ---
SHSetKnownFolderPath :: proc(rfid: REFKNOWNFOLDERID, dwFlags: /* KNOWN_FOLDER_FLAG */ DWORD, hToken: HANDLE, pszPath: PCWSTR ) -> HRESULT ---
SHGetKnownFolderPath :: proc(rfid: REFKNOWNFOLDERID, dwFlags: /* KNOWN_FOLDER_FLAG */ DWORD, hToken: HANDLE, ppszPath: ^LPWSTR) -> HRESULT ---
ExtractIconExW :: proc(pszFile: LPCWSTR, nIconIndex: INT, phiconLarge: ^HICON, phiconSmall: ^HICON, nIcons: UINT) -> UINT ---
DragAcceptFiles :: proc(hWnd: HWND, fAccept: BOOL) ---
DragQueryPoint :: proc(hDrop: HDROP, ppt: ^POINT) -> BOOL ---
DragQueryFileW :: proc(hDrop: HDROP, iFile: UINT, lpszFile: LPWSTR, cch: UINT) -> UINT ---
DragFinish :: proc(hDrop: HDROP) --- // @New
}
APPBARDATA :: struct {
cbSize: DWORD,
hWnd: HWND,
uCallbackMessage: UINT,
uEdge: UINT,
rc: RECT,
lParam: LPARAM,
}
PAPPBARDATA :: ^APPBARDATA
ABM_NEW :: 0x00000000
ABM_REMOVE :: 0x00000001
ABM_QUERYPOS :: 0x00000002
ABM_SETPOS :: 0x00000003
ABM_GETSTATE :: 0x00000004
ABM_GETTASKBARPOS :: 0x00000005
ABM_ACTIVATE :: 0x00000006
ABM_GETAUTOHIDEBAR :: 0x00000007
ABM_SETAUTOHIDEBAR :: 0x00000008
ABM_WINDOWPOSCHANGED :: 0x0000009
ABM_SETSTATE :: 0x0000000a
ABN_STATECHANGE :: 0x0000000
ABN_POSCHANGED :: 0x0000001
ABN_FULLSCREENAPP :: 0x0000002
ABN_WINDOWARRANGE :: 0x0000003
ABS_AUTOHIDE :: 0x0000001
ABS_ALWAYSONTOP :: 0x0000002
ABE_LEFT :: 0
ABE_TOP :: 1
ABE_RIGHT :: 2
ABE_BOTTOM :: 3
KNOWNFOLDERID :: GUID
REFKNOWNFOLDERID :: ^KNOWNFOLDERID
HDROP :: HANDLE
KNOWN_FOLDER_FLAG :: enum u32 {
DEFAULT = 0x00000000,
// if NTDDI_VERSION >= NTDDI_WIN10_RS3
FORCE_APP_DATA_REDIRECTION = 0x00080000,
// if NTDDI_VERSION >= NTDDI_WIN10_RS2
RETURN_FILTER_REDIRECTION_TARGET = 0x00040000,
FORCE_PACKAGE_REDIRECTION = 0x00020000,
NO_PACKAGE_REDIRECTION = 0x00010000,
FORCE_APPCONTAINER_REDIRECTION = 0x00020000,
// if NTDDI_VERSION >= NTDDI_WIN7
NO_APPCONTAINER_REDIRECTION = 0x00010000,
CREATE = 0x00008000,
DONT_VERIFY = 0x00004000,
DONT_UNEXPAND = 0x00002000,
NO_ALIAS = 0x00001000,
INIT = 0x00000800,
DEFAULT_PATH = 0x00000400,
NOT_PARENT_RELATIVE = 0x00000200,
SIMPLE_IDLIST = 0x00000100,
ALIAS_ONLY = 0x80000000,
}
SHCNRF_InterruptLevel :: 0x0001
SHCNRF_ShellLevel :: 0x0002
SHCNRF_RecursiveInterrupt :: 0x1000
SHCNRF_NewDelivery :: 0x8000
SHCNE_RENAMEITEM :: 0x00000001
SHCNE_CREATE :: 0x00000002
SHCNE_DELETE :: 0x00000004
SHCNE_MKDIR :: 0x00000008
SHCNE_RMDIR :: 0x00000010
SHCNE_MEDIAINSERTED :: 0x00000020
SHCNE_MEDIAREMOVED :: 0x00000040
SHCNE_DRIVEREMOVED :: 0x00000080
SHCNE_DRIVEADD :: 0x00000100
SHCNE_NETSHARE :: 0x00000200
SHCNE_NETUNSHARE :: 0x00000400
SHCNE_ATTRIBUTES :: 0x00000800
SHCNE_UPDATEDIR :: 0x00001000
SHCNE_UPDATEITEM :: 0x00002000
SHCNE_SERVERDISCONNECT :: 0x00004000
SHCNE_UPDATEIMAGE :: 0x00008000
SHCNE_DRIVEADDGUI :: 0x00010000
SHCNE_RENAMEFOLDER :: 0x00020000
SHCNE_FREESPACE :: 0x00040000
SHCNE_EXTENDED_EVENT :: 0x04000000
SHCNE_ASSOCCHANGED :: 0x08000000
SHCNE_DISKEVENTS :: 0x0002381F
SHCNE_GLOBALEVENTS :: 0x0C0581E0
SHCNE_ALLEVENTS :: 0x7FFFFFFF
SHCNE_INTERRUPT :: 0x80000000
SHCNEE_ORDERCHANGED :: 2
SHCNEE_MSI_CHANGE :: 4
SHCNEE_MSI_UNINSTALL :: 5
SHCNF_IDLIST :: 0x0000
SHCNF_PATHA :: 0x0001
SHCNF_PRINTERA :: 0x0002
SHCNF_DWORD :: 0x0003
SHCNF_PATHW :: 0x0005
SHCNF_PRINTERW :: 0x0006
SHCNF_TYPE :: 0x00FF
SHCNF_FLUSH :: 0x1000
SHCNF_FLUSHNOWAIT :: 0x3000
SHCNF_NOTIFYRECURSIVE :: 0x10000