mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 14:48:47 +00:00
Merge pull request #2391 from ftphikari/master
sys/windows: added some functions and types for input hooks and tray …
This commit is contained in:
@@ -23,6 +23,8 @@ foreign shell32 {
|
|||||||
SHFileOperationW :: proc(lpFileOp: LPSHFILEOPSTRUCTW) -> c_int ---
|
SHFileOperationW :: proc(lpFileOp: LPSHFILEOPSTRUCTW) -> c_int ---
|
||||||
SHGetFolderPathW :: proc(hwnd: HWND, csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszPath: LPWSTR) -> HRESULT ---
|
SHGetFolderPathW :: proc(hwnd: HWND, csidl: c_int, hToken: HANDLE, dwFlags: DWORD, pszPath: LPWSTR) -> HRESULT ---
|
||||||
SHAppBarMessage :: proc(dwMessage: DWORD, pData: PAPPBARDATA) -> UINT_PTR ---
|
SHAppBarMessage :: proc(dwMessage: DWORD, pData: PAPPBARDATA) -> UINT_PTR ---
|
||||||
|
|
||||||
|
Shell_NotifyIconW :: proc(dwMessage: DWORD, lpData: ^NOTIFYICONDATAW) -> BOOL ---
|
||||||
}
|
}
|
||||||
|
|
||||||
APPBARDATA :: struct {
|
APPBARDATA :: struct {
|
||||||
|
|||||||
@@ -724,6 +724,14 @@ CWPRETSTRUCT :: struct {
|
|||||||
hwnd: HWND,
|
hwnd: HWND,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MSLLHOOKSTRUCT :: struct {
|
||||||
|
pt: POINT,
|
||||||
|
mouseData: DWORD,
|
||||||
|
flags: DWORD,
|
||||||
|
time: DWORD,
|
||||||
|
dwExtraInfo: ULONG_PTR,
|
||||||
|
}
|
||||||
|
|
||||||
KBDLLHOOKSTRUCT :: struct {
|
KBDLLHOOKSTRUCT :: struct {
|
||||||
vkCode: DWORD,
|
vkCode: DWORD,
|
||||||
scanCode: DWORD,
|
scanCode: DWORD,
|
||||||
@@ -732,6 +740,59 @@ KBDLLHOOKSTRUCT :: struct {
|
|||||||
dwExtraInfo: ULONG_PTR,
|
dwExtraInfo: ULONG_PTR,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MOUSEINPUT :: struct {
|
||||||
|
dx: LONG,
|
||||||
|
dy: LONG,
|
||||||
|
mouseData: DWORD,
|
||||||
|
dwFlags: DWORD,
|
||||||
|
time: DWORD,
|
||||||
|
dwExtraInfo: ULONG_PTR,
|
||||||
|
}
|
||||||
|
|
||||||
|
KEYBDINPUT :: struct {
|
||||||
|
wVk: WORD,
|
||||||
|
wScan: WORD,
|
||||||
|
dwFlags: DWORD,
|
||||||
|
time: DWORD,
|
||||||
|
dwExtraInfo: ULONG_PTR,
|
||||||
|
}
|
||||||
|
|
||||||
|
HARDWAREINPUT :: struct {
|
||||||
|
uMsg: DWORD,
|
||||||
|
wParamL: WORD,
|
||||||
|
wParamH: WORD,
|
||||||
|
}
|
||||||
|
|
||||||
|
INPUT_TYPE :: enum DWORD {
|
||||||
|
MOUSE = 0,
|
||||||
|
KEYBOARD = 1,
|
||||||
|
HARDWARE = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
INPUT :: struct {
|
||||||
|
type: INPUT_TYPE,
|
||||||
|
using _: struct #raw_union {
|
||||||
|
mi: MOUSEINPUT,
|
||||||
|
ki: KEYBDINPUT,
|
||||||
|
hi: HARDWAREINPUT,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
MOUSEEVENTF_MOVE :: 0x0001
|
||||||
|
MOUSEEVENTF_LEFTDOWN :: 0x0002
|
||||||
|
MOUSEEVENTF_LEFTUP :: 0x0004
|
||||||
|
MOUSEEVENTF_RIGHTDOWN :: 0x0008
|
||||||
|
MOUSEEVENTF_RIGHTUP :: 0x0010
|
||||||
|
MOUSEEVENTF_MIDDLEDOWN :: 0x0020
|
||||||
|
MOUSEEVENTF_MIDDLEUP :: 0x0040
|
||||||
|
MOUSEEVENTF_XDOWN :: 0x0080
|
||||||
|
MOUSEEVENTF_XUP :: 0x0100
|
||||||
|
MOUSEEVENTF_WHEEL :: 0x0800
|
||||||
|
MOUSEEVENTF_HWHEEL :: 0x1000
|
||||||
|
MOUSEEVENTF_MOVE_NOCOALESCE :: 0x2000
|
||||||
|
MOUSEEVENTF_VIRTUALDESK :: 0x4000
|
||||||
|
MOUSEEVENTF_ABSOLUTE :: 0x8000
|
||||||
|
|
||||||
WNDCLASSA :: struct {
|
WNDCLASSA :: struct {
|
||||||
style: UINT,
|
style: UINT,
|
||||||
lpfnWndProc: WNDPROC,
|
lpfnWndProc: WNDPROC,
|
||||||
@@ -799,6 +860,104 @@ MSG :: struct {
|
|||||||
|
|
||||||
LPMSG :: ^MSG
|
LPMSG :: ^MSG
|
||||||
|
|
||||||
|
NOTIFYICONDATAW :: struct {
|
||||||
|
cbSize: DWORD,
|
||||||
|
hWnd: HWND,
|
||||||
|
uID: UINT,
|
||||||
|
uFlags: UINT,
|
||||||
|
uCallbackMessage: UINT,
|
||||||
|
hIcon: HICON,
|
||||||
|
szTip: [128]WCHAR,
|
||||||
|
dwState: DWORD,
|
||||||
|
dwStateMask: DWORD,
|
||||||
|
szInfo: [256]WCHAR,
|
||||||
|
using _: struct #raw_union {
|
||||||
|
uTimeout: UINT,
|
||||||
|
uVersion: UINT,
|
||||||
|
},
|
||||||
|
szInfoTitle: [64]WCHAR,
|
||||||
|
dwInfoFlags: DWORD,
|
||||||
|
guidItem: GUID,
|
||||||
|
hBalloonIcon: HICON,
|
||||||
|
}
|
||||||
|
|
||||||
|
NIF_MESSAGE :: 0x00000001
|
||||||
|
NIF_ICON :: 0x00000002
|
||||||
|
NIF_TIP :: 0x00000004
|
||||||
|
NIF_STATE :: 0x00000008
|
||||||
|
NIF_INFO :: 0x00000010
|
||||||
|
NIF_GUID :: 0x00000020
|
||||||
|
NIF_REALTIME :: 0x00000040
|
||||||
|
NIF_SHOWTIP :: 0x00000080
|
||||||
|
|
||||||
|
NIM_ADD :: 0x00000000
|
||||||
|
NIM_MODIFY :: 0x00000001
|
||||||
|
NIM_DELETE :: 0x00000002
|
||||||
|
NIM_SETFOCUS :: 0x00000003
|
||||||
|
NIM_SETVERSION :: 0x00000004
|
||||||
|
|
||||||
|
// Menu flags for Add/Check/EnableMenuItem()
|
||||||
|
MF_INSERT :: 0x00000000
|
||||||
|
MF_CHANGE :: 0x00000080
|
||||||
|
MF_APPEND :: 0x00000100
|
||||||
|
MF_DELETE :: 0x00000200
|
||||||
|
MF_REMOVE :: 0x00001000
|
||||||
|
|
||||||
|
MF_BYCOMMAND :: 0x00000000
|
||||||
|
MF_BYPOSITION :: 0x00000400
|
||||||
|
|
||||||
|
MF_SEPARATOR :: 0x00000800
|
||||||
|
|
||||||
|
MF_ENABLED :: 0x00000000
|
||||||
|
MF_GRAYED :: 0x00000001
|
||||||
|
MF_DISABLED :: 0x00000002
|
||||||
|
|
||||||
|
MF_UNCHECKED :: 0x00000000
|
||||||
|
MF_CHECKED :: 0x00000008
|
||||||
|
MF_USECHECKBITMAPS :: 0x00000200
|
||||||
|
|
||||||
|
MF_STRING :: 0x00000000
|
||||||
|
MF_BITMAP :: 0x00000004
|
||||||
|
MF_OWNERDRAW :: 0x00000100
|
||||||
|
|
||||||
|
MF_POPUP :: 0x00000010
|
||||||
|
MF_MENUBARBREAK :: 0x00000020
|
||||||
|
MF_MENUBREAK :: 0x00000040
|
||||||
|
|
||||||
|
MF_UNHILITE :: 0x00000000
|
||||||
|
MF_HILITE :: 0x00000080
|
||||||
|
|
||||||
|
MF_DEFAULT :: 0x00001000
|
||||||
|
MF_SYSMENU :: 0x00002000
|
||||||
|
MF_HELP :: 0x00004000
|
||||||
|
MF_RIGHTJUSTIFY :: 0x00004000
|
||||||
|
|
||||||
|
MF_MOUSESELECT :: 0x00008000
|
||||||
|
MF_END :: 0x00000080 // Obsolete -- only used by old RES files
|
||||||
|
|
||||||
|
// Flags for TrackPopupMenu
|
||||||
|
TPM_LEFTBUTTON :: 0x0000
|
||||||
|
TPM_RIGHTBUTTON :: 0x0002
|
||||||
|
TPM_LEFTALIGN :: 0x0000
|
||||||
|
TPM_CENTERALIGN :: 0x0004
|
||||||
|
TPM_RIGHTALIGN :: 0x0008
|
||||||
|
TPM_TOPALIGN :: 0x0000
|
||||||
|
TPM_VCENTERALIGN :: 0x0010
|
||||||
|
TPM_BOTTOMALIGN :: 0x0020
|
||||||
|
|
||||||
|
TPM_HORIZONTAL :: 0x0000 /* Horz alignment matters more */
|
||||||
|
TPM_VERTICAL :: 0x0040 /* Vert alignment matters more */
|
||||||
|
TPM_NONOTIFY :: 0x0080 /* Don't send any notification msgs */
|
||||||
|
TPM_RETURNCMD :: 0x0100
|
||||||
|
TPM_RECURSE :: 0x0001
|
||||||
|
TPM_HORPOSANIMATION :: 0x0400
|
||||||
|
TPM_HORNEGANIMATION :: 0x0800
|
||||||
|
TPM_VERPOSANIMATION :: 0x1000
|
||||||
|
TPM_VERNEGANIMATION :: 0x2000
|
||||||
|
TPM_NOANIMATION :: 0x4000
|
||||||
|
TPM_LAYOUTRTL :: 0x8000
|
||||||
|
TPM_WORKAREA :: 0x10000
|
||||||
|
|
||||||
// WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
|
// WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
|
||||||
HTERROR :: -2
|
HTERROR :: -2
|
||||||
HTTRANSPARENT :: -1
|
HTTRANSPARENT :: -1
|
||||||
|
|||||||
@@ -109,6 +109,12 @@ foreign user32 {
|
|||||||
GetDlgCtrlID :: proc(hWnd: HWND) -> c_int ---
|
GetDlgCtrlID :: proc(hWnd: HWND) -> c_int ---
|
||||||
GetDlgItem :: proc(hDlg: HWND, nIDDlgItem: c_int) -> HWND ---
|
GetDlgItem :: proc(hDlg: HWND, nIDDlgItem: c_int) -> HWND ---
|
||||||
|
|
||||||
|
CreatePopupMenu :: proc() -> HMENU ---
|
||||||
|
DestroyMenu :: proc(hMenu: HMENU) -> BOOL ---
|
||||||
|
AppendMenuW :: proc(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT_PTR, lpNewItem: LPCWSTR) -> BOOL ---
|
||||||
|
TrackPopupMenu :: proc(hMenu: HMENU, uFlags: UINT, x: int, y: int, nReserved: int, hWnd: HWND, prcRect: ^RECT) -> i32 ---
|
||||||
|
RegisterWindowMessageW :: proc(lpString: LPCWSTR) -> UINT ---
|
||||||
|
|
||||||
GetUpdateRect :: proc(hWnd: HWND, lpRect: LPRECT, bErase: BOOL) -> BOOL ---
|
GetUpdateRect :: proc(hWnd: HWND, lpRect: LPRECT, bErase: BOOL) -> BOOL ---
|
||||||
ValidateRect :: proc(hWnd: HWND, lpRect: ^RECT) -> BOOL ---
|
ValidateRect :: proc(hWnd: HWND, lpRect: ^RECT) -> BOOL ---
|
||||||
InvalidateRect :: proc(hWnd: HWND, lpRect: ^RECT, bErase: BOOL) -> BOOL ---
|
InvalidateRect :: proc(hWnd: HWND, lpRect: ^RECT, bErase: BOOL) -> BOOL ---
|
||||||
@@ -206,6 +212,8 @@ foreign user32 {
|
|||||||
GetRegisteredRawInputDevices :: proc(pRawInputDevices: PRAWINPUTDEVICE, puiNumDevices: PUINT, cbSize: UINT) -> UINT ---
|
GetRegisteredRawInputDevices :: proc(pRawInputDevices: PRAWINPUTDEVICE, puiNumDevices: PUINT, cbSize: UINT) -> UINT ---
|
||||||
RegisterRawInputDevices :: proc(pRawInputDevices: PCRAWINPUTDEVICE, uiNumDevices: UINT, cbSize: UINT) -> BOOL ---
|
RegisterRawInputDevices :: proc(pRawInputDevices: PCRAWINPUTDEVICE, uiNumDevices: UINT, cbSize: UINT) -> BOOL ---
|
||||||
|
|
||||||
|
SendInput :: proc(cInputs: UINT, pInputs: [^]INPUT, cbSize: ^c_int) -> UINT ---
|
||||||
|
|
||||||
SetLayeredWindowAttributes :: proc(hWnd: HWND, crKey: COLORREF, bAlpha: BYTE, dwFlags: DWORD) -> BOOL ---
|
SetLayeredWindowAttributes :: proc(hWnd: HWND, crKey: COLORREF, bAlpha: BYTE, dwFlags: DWORD) -> BOOL ---
|
||||||
|
|
||||||
FillRect :: proc(hDC: HDC, lprc: ^RECT, hbr: HBRUSH) -> int ---
|
FillRect :: proc(hDC: HDC, lprc: ^RECT, hbr: HBRUSH) -> int ---
|
||||||
|
|||||||
Reference in New Issue
Block a user