Index: /trunk/Include/api_window.sbp
===================================================================
--- /trunk/Include/api_window.sbp	(revision 417)
+++ /trunk/Include/api_window.sbp	(revision 418)
@@ -446,5 +446,10 @@
 Declare Function BeginPaint Lib "user32" (hWnd As HWND, ByRef Paint As PAINTSTRUCT) As HDC
 Declare Function BringWindowToTop Lib "user32" (hWnd As HWND) As Long
+
 Declare Function CallNextHookEx Lib "user32" (hHook As HHOOK, nCode As Long, wParam As WPARAM, lParam As LPARAM) As LRESULT
+Function DefHookProc(ByVal nCode As Long, ByVal wParam As WPARAM, ByVal lParam As LPARAM, ByVal phhk As *HHOOK) As LRESULT
+	Return CallNextHookEx(phhk[0], nCode, wParam, lParam)
+End Function
+
 Declare Function CallWindowProc Lib "user32" Alias _FuncName_CallWindowProc (lpPrevWndFunc As WNDPROC, hWnd As HWND, Msg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
 Declare Function ChangeClipboardChain Lib "user32" (hwndRemove As HWND, hwndNewNext As HWND) As BOOL
@@ -486,4 +491,6 @@
 Declare Function CreateCursor Lib "user32" (hInst As HINSTANCE, xHotSpot As Long, yHotSpot As Long, nWidth As Long, nHeight As Long, pvANDPlane As VoidPtr, pvXORPlane As VoidPtr) As HCURSOR
 Declare Function CreateIcon Lib "user32" (hInst As HINSTANCE, nWidth As Long, nHeight As Long, cPlanes As Byte, cBitsPixel As Byte, lpbANDbits As VoidPtr, lpbXORbits As VoidPtr) As HICON
+Declare Function LookupIconIdFromDirectory Lib "user32" (ByVal presbits As *BYTE, ByVal fIcon As BOOL) As Long
+Declare Function LookupIconIdFromDirectoryEx Lib "user32" (ByVal presbits As *BYTE, ByVal fIcon As BOOL, ByVal cxDesired As Long, ByVal cyDesired As Long, ByVal Flags As DWord) As Long
 
 Type ICONINFO
@@ -502,8 +509,39 @@
 Declare Function CreateWindowEx Lib "user32" Alias _FuncName_CreateWindowEx (dwExStyle As DWord, pClassName As PCTSTR, lpWindowName As PCTSTR, dwStyle As DWord, x As Long, y As Long, nWidth As Long, nHeight As Long, hwndParent As HWND, hmenu As HMENU, hInstance As HINSTANCE, pParm As VoidPtr) As HWND
 
+Declare Function CreateMDIWindowA Lib "user32" (ByVal lpClassName As LPCSTR, ByVal lpWindowName As LPCSTR, ByVal dwStyle As DWord, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As HWND, ByVal hInstance As HINSTANCE, ByVal lParam As LPARAM) As HWND
+Declare Function CreateMDIWindowW Lib "user32" (ByVal lpClassName As LPCWSTR, ByVal lpWindowName As LPCWSTR, ByVal dwStyle As DWord, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As HWND, ByVal hInstance As HINSTANCE, ByVal lParam As LPARAM) As HWND
+#ifdef UNICODE
+Declare Function CreateMDIWindow Lib "user32" Alias "CreateMDIWindowW" (ByVal lpClassName As LPCWSTR, ByVal lpWindowName As LPCWSTR, ByVal dwStyle As DWord, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As HWND, ByVal hInstance As HINSTANCE, ByVal lParam As LPARAM) As HWND
+#else
+Declare Function CreateMDIWindow Lib "user32" Alias "CreateMDIWindowA" (ByVal lpClassName As LPCSTR, ByVal lpWindowName As LPCSTR, ByVal dwStyle As DWord, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As HWND, ByVal hInstance As HINSTANCE, ByVal lParam As LPARAM) As HWND
+#endif ' !UNICODE
+
 Declare Function DefDlgProc Lib "user32" Alias _FuncName_DefWindowProc (hDlg As HWND, Msg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
 Declare Function DefWindowProc Lib "user32" Alias _FuncName_DefWindowProc (hWnd As HWND, wMsg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
+
+Declare Function DefFrameProcA Lib "user32" (ByRef hWnd As HWND, ByRef hWndMDIClient As HWND, ByVal uMsg As DWord, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
+Declare Function DefFrameProcW Lib "user32" (ByRef hWnd As HWND, ByRef hWndMDIClient As HWND, ByVal uMsg As DWord, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
+#ifdef UNICODE
+Declare Function DefFrameProc Lib "user32" Alias "DefFrameProcW" (ByRef hWnd As HWND, ByRef hWndMDIClient As HWND, ByVal uMsg As DWord, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
+#else
+Declare Function DefFrameProc Lib "user32" Alias "DefFrameProcA" (ByRef hWnd As HWND, ByRef hWndMDIClient As HWND, ByVal uMsg As DWord, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
+#endif ' !UNICODE
+
+Declare Function DefMDIChildProcA Lib "user32" (ByVal hWnd As HWND, ByVal uMsg As DWord, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
+Declare Function DefMDIChildProcW Lib "user32" (ByVal hWnd As HWND, ByVal uMsg As DWord, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
+#ifdef UNICODE
+Declare Function DefMDIChildProc Lib "user32" Alias "DefMDIChildProcW" (ByVal hWnd As HWND, ByVal uMsg As DWord, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
+#else
+Declare Function DefMDIChildProc Lib "user32" Alias "DefMDIChildProcA" (ByVal hWnd As HWND, ByVal uMsg As DWord, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
+#endif ' !UNICODE
+
 Declare Function DeleteMenu Lib "user32" (hMenu As HMENU, uPosition As DWord, uFlags As DWord) As BOOL
 Declare Function DestroyAcceleratorTable Lib "user32" (hAccel As HACCEL) As BOOL
+
+Declare Function TranslateMDISysAccel Lib "user32" (ByVal hWndClient As HWND, ByRef lpMsg As MSG) As BOOL
+Declare Function ArrangeIconicWindows Lib "user32" (ByVal hWnd As HWND) As DWord
+Declare Function TileWindows Lib "user32" (ByVal hwndParent As HWND, ByVal wHow As DWord, ByRef lpRect As RECT, ByVal cKids As DWord, ByVal lpKids As *HWND) As Word
+Declare Function CascadeWindows Lib "user32" (ByVal hwndParent As HWND, ByVal wHow As DWord, ByRef lpRect As RECT, ByVal cKids As DWord, ByVal lpKids As *HWND) As Word
+
 Declare Function DestroyCaret Lib "user32" () As BOOL
 Declare Function DestroyCursor Lib "user32" (hCursor As HCURSOR) As BOOL
@@ -530,4 +568,5 @@
 End Type
 Declare Function DialogBoxIndirectParam Lib "user32" Alias _FuncName_DialogBoxIndirectParam (hInstance As HINSTANCE, DialogTemplate As *DLGTEMPLATE, hwndParent As HWND, pDialogFunc As DLGPROC, InitParam As LPARAM) As LONG_PTR
+Declare Function MapDialogRect Lib "user32" (ByVal hDlg As HWND, ByRef lpRect As RECT) As BOOL
 Declare Function DispatchMessage Lib "user32" Alias _FuncName_DispatchMessage (ByRef Msg As MSG) As LRESULT
 Declare Function DlgDirList Lib "user32" Alias _FuncName_DlgDirList (hDlg As HWND, lpPathSpec As LPTSTR, nIDListBox As Long, nIDStaticPath As Long, uFileType As DWord) As Long
@@ -614,4 +653,29 @@
 Declare Function DrawMenuBar Lib "user32" (hwnd As HWND) As BOOL
 
+Type DROPSTRUCT
+	hwndSource As HWND
+	hwndSink As HWND
+	wFmt As DWord
+	dwData As ULONG_PTR
+	ptDrop As POINTAPI
+	dwControlData As DWord
+End Type
+TypeDef PDROPSTRUCT= *DROPSTRUCT
+TypeDef LPDROPSTRUCT= *DROPSTRUCT
+
+Const DOF_EXECUTABLE = &H8001
+Const DOF_DOCUMENT = &H8002
+Const DOF_DIRECTORY = &H8003
+Const DOF_MULTIPLE = &H8004
+Const DOF_PROGMAN = &H0001
+Const DOF_SHELLDATA = &H0002
+
+Const DO_DROPFILE = &H454C4946
+Const DO_PRINTFILE = &H544E5250
+
+Declare Function DragObject Lib "user32" (ByVal hwndParent As HWND, ByVal hwndFrom As HWND, ByVal fmt As DWord, ByVal data As ULONG_PTR, ByVal hcur As HCURSOR) As DWord
+Declare Function DragDetect Lib "user32" (ByVal hwnd As HWND, ByRef pt As POINTAPI) As BOOL
+
+
 Const DT_TOP =            &H00000000
 Const DT_LEFT =           &H00000000
@@ -646,4 +710,54 @@
 Declare Function DrawTextEx Lib "user32" Alias _FuncName_DrawTextEx (hdc As HDC, pchText As PCTSTR, cchText As Long, ByRef Rect As RECT, dwDTFormat As DWord, ByRef DTParams As DRAWTEXTPARAMS) As BOOL
 
+TypeDef GRAYSTRINGPROC = *Function(hDC As HDC, lParam As LPARAM, l As Long) As BOOL
+
+Declare Function GrayStringA Lib "user32" (ByVal hDC As HDC, ByVal hBrush As HBRUSH, ByVal lpOutputFunc As GRAYSTRINGPROC, ByVal lpData As LPARAM, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long) As BOOL
+Declare Function GrayStringW Lib "user32" (ByVal hDC As HDC, ByVal hBrush As HBRUSH, ByVal lpOutputFunc As GRAYSTRINGPROC, ByVal lpData As LPARAM, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long) As BOOL
+#ifdef UNICODE
+Declare Function GrayString Lib "user32" Alias "GrayStringW" (ByVal hDC As HDC, ByVal hBrush As HBRUSH, ByVal lpOutputFunc As GRAYSTRINGPROC, ByVal lpData As LPARAM, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long) As BOOL
+#else
+Declare Function GrayString Lib "user32" Alias "GrayStringA" (ByVal hDC As HDC, ByVal hBrush As HBRUSH, ByVal lpOutputFunc As GRAYSTRINGPROC, ByVal lpData As LPARAM, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long) As BOOL
+#endif ' !UNICODE
+
+Const DST_COMPLEX = &H0000
+Const DST_TEXT = &H0001
+Const DST_PREFIXTEXT = &H0002
+Const DST_ICON = &H0003
+Const DST_BITMAP = &H0004
+
+Const DSS_NORMAL = &H0000
+Const DSS_UNION = &H0010
+Const DSS_DISABLED = &H0020
+Const DSS_MONO = &H0080
+Const DSS_HIDEPREFIX = &H0200
+Const DSS_PREFIXONLY = &H0400
+Const DSS_RIGHT = &H8000
+
+TypeDef DRAWSTATEPROC = *Function(hdc As HDC, lData As LPARAM, wData As WPARAM, cx As Long, cy As Long) As BOOL
+
+Declare Function DrawStateA Lib "user32" (ByVal hdc As HDC, ByVal hbrFore As HBRUSH, ByVal qfnCallBack As DRAWSTATEPROC, ByVal lData As LPARAM, ByVal wData As WPARAM, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal uFlags As DWord) As BOOL
+Declare Function DrawStateW Lib "user32" (ByVal hdc As HDC, ByVal hbrFore As HBRUSH, ByVal qfnCallBack As DRAWSTATEPROC, ByVal lData As LPARAM, ByVal wData As WPARAM, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal uFlags As DWord) As BOOL
+#ifdef UNICODE
+Declare Function DrawState Lib "user32" Alias "DrawStateW" (ByVal hdc As HDC, ByVal hbrFore As HBRUSH, ByVal qfnCallBack As DRAWSTATEPROC, ByVal lData As LPARAM, ByVal wData As WPARAM, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal uFlags As DWord) As BOOL
+#else
+Declare Function DrawState Lib "user32" Alias "DrawStateA" (ByVal hdc As HDC, ByVal hbrFore As HBRUSH, ByVal qfnCallBack As DRAWSTATEPROC, ByVal lData As LPARAM, ByVal wData As WPARAM, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal uFlags As DWord) As BOOL
+#endif ' !UNICODE
+
+Declare Function TabbedTextOutA Lib "user32" (ByVal hdc As HDC, ByVal x As Long, ByVal y As Long, ByVal lpString As LPCSTR, ByVal chCount As Long, ByVal nTabPositions As Long, ByVal lpnTabStopPositions As *Long, ByVal nTabOrigin As Long) As Long
+Declare Function TabbedTextOutW Lib "user32" (ByVal hdc As HDC, ByVal x As Long, ByVal y As Long, ByVal lpString As LPCWSTR, ByVal chCount As Long, ByVal nTabPositions As Long, ByVal lpnTabStopPositions As *Long, ByVal nTabOrigin As Long) As Long
+#ifdef UNICODE
+Declare Function TabbedTextOut Lib "user32" Alias "TabbedTextOutW" (ByVal hdc As HDC, ByVal x As Long, ByVal y As Long, ByVal lpString As LPCWSTR, ByVal chCount As Long, ByVal nTabPositions As Long, ByVal lpnTabStopPositions As *Long, ByVal nTabOrigin As Long) As Long
+#else
+Declare Function TabbedTextOut Lib "user32" Alias "TabbedTextOutA" (ByVal hdc As HDC, ByVal x As Long, ByVal y As Long, ByVal lpString As LPCSTR, ByVal chCount As Long, ByVal nTabPositions As Long, ByVal lpnTabStopPositions As *Long, ByVal nTabOrigin As Long) As Long
+#endif ' !UNICODE
+
+Declare Function GetTabbedTextExtentA Lib "user32" (ByVal hdc As HDC, ByVal lpString As LPCSTR, ByVal chCount As Long, ByVal nTabPositions As Long, ByVal lpnTabStopPositions As *Long) As DWord
+Declare Function GetTabbedTextExtentW Lib "user32" (ByVal hdc As HDC, ByVal lpString As LPCWSTR, ByVal chCount As Long, ByVal nTabPositions As Long, ByVal lpnTabStopPositions As *Long) As DWord
+#ifdef UNICODE
+Declare Function GetTabbedTextExtent Lib "user32" Alias "GetTabbedTextExtentW" (ByVal hdc As HDC, ByVal lpString As LPCWSTR, ByVal chCount As Long, ByVal nTabPositions As Long, ByVal lpnTabStopPositions As *Long) As DWord
+#else
+Declare Function GetTabbedTextExtent Lib "user32" Alias "GetTabbedTextExtentA" (ByVal hdc As HDC, ByVal lpString As LPCSTR, ByVal chCount As Long, ByVal nTabPositions As Long, ByVal lpnTabStopPositions As *Long) As DWord
+#endif ' !UNICODE
+
 Declare Function EmptyClipboard Lib "user32" () As BOOL
 Declare Function EnableMenuItem Lib "user32" (hMenu As HMENU, uIDEnableItem As DWord, uEnable As DWord) As BOOL
@@ -669,4 +783,7 @@
 Declare Function ExitWindowsEx Lib "user32" (uFlags As DWord, dwReserved As DWord) As BOOL
 Declare Function FillRect Lib "user32" (hdc As HDC, ByRef lpRect As RECT, hBrush As HBRUSH) As BOOL
+
+Declare Function DrawFocusRect Lib "user32" (ByVal hDC As HDC, ByRef lprc As RECT) As BOOL
+
 Declare Function FindWindow Lib "user32" Alias _FuncName_FindWindow (pClassName As PCTSTR, lpWindowName As PCTSTR) As HWND
 Declare Function FindWindowEx Lib "user32" Alias _FuncName_FindWindowEx (hwndParent As HWND, hwndChildAfter As HWND, pszClass As PCTSTR, pszWindow As PCTSTR) As HWND
@@ -790,4 +907,5 @@
 Declare Function GetProp Lib "user32" Alias _FuncName_GetProp (hWnd As HWND, pString As PCTSTR) As HANDLE
 Declare Function GetScrollInfo Lib "user32" (hWnd As HWND, fnBar As Long, ByRef lpsi As SCROLLINFO) As BOOL
+
 Declare Function GetSubMenu Lib "user32" (hMenu As HMENU, nPos As Long) As HMENU
 
@@ -921,4 +1039,23 @@
 Declare Function GetWindow Lib "user32" (hWnd As HWND, uCmd As DWord) As HWND
 
+Declare Function GetTopWindow Lib "user32" (ByVal hWnd As HWND) As HWND
+
+Function GetNextWindow(ByVal hWnd As HWND, ByVal wCmd As DWord) As HWND
+	Return GetWindow(hWnd, wCmd) As HWND
+End Function
+Function GetSysModalWindow() As HWND
+	Return (NULL) As HWND
+End Function
+Function SetSysModalWindow(ByVal hWnd As HWND) As HWND
+	Return (NULL) As HWND
+End Function
+
+Function GetWindowTask(hWnd As HWND) As HANDLE
+	Return GetWindowThreadProcessId(hWnd, NULL) As HANDLE
+End Function
+
+Declare Function GetLastActivePopup Lib "user32" (ByVal hWnd As HWND) As HWND
+
+
 Declare Function GetWindowContextHelpId Lib "user32" (hwnd As HWND) As DWord
 
@@ -965,5 +1102,8 @@
 
 Declare Function GetWindowRect Lib "user32" (hWnd As HWND, ByRef lpRect As RECT) As BOOL
+
 Declare Function GetWindowRgn Lib "user32" (hWnd As HWND, hRgn As HRGN) As Long
+Declare Function ExcludeUpdateRgn Lib "user32" (ByVal hDC As HDC, ByVal hWnd As HWND) As Long
+
 Declare Function GetWindowText Lib "user32" Alias _FuncName_GetWindowText (hWnd As HWND, lpString As PTSTR, nMaxCount As Long) As Long
 Declare Function GetWindowTextLength Lib "user32" Alias _FuncName_GetWindowTextLength (hWnd As HWND) As Long
@@ -1142,4 +1282,9 @@
 Declare Function ScrollDC Lib "user32" (hdc As HDC, dx As Long, dy As Long, ByRef rcScroll As RECT, ByRef rcClip As RECT, hrgnUpdate As HRGN, ByRef rcUpdate As RECT) As BOOL
 
+Declare Function SetScrollPos Lib "user32" (ByVal hWnd As HWND, ByVal nBar As Long, ByVal nPos As Long, ByVal bRedraw As BOOL) As Long
+Declare Function GetScrollPos Lib "user32" (ByVal hWnd As HWND, ByVal nBar As Long) As Long
+Declare Function SetScrollRange Lib "user32" (ByVal hWnd As HWND, ByVal nBar As Long, ByVal nMinPos As Long, ByVal nMaxPos As Long, ByVal bRedraw As BOOL) As BOOL
+Declare Function GetScrollRange Lib "user32" (ByVal hWnd As HWND, ByVal nBar As Long, ByRef lpMinPos As Long, ByRef lpMaxPos As Long) As BOOL
+
 Const SW_SCROLLCHILDREN = &H0001
 Const SW_INVALIDATE =     &H0002
@@ -1172,5 +1317,183 @@
 Declare Function SetForegroundWindow Lib "user32" (hWnd As HWND) As BOOL
 Declare Function SetKeyboardState Lib "user32" (lpKeyState As *Byte) As BOOL
+
+Declare Function GetKeyNameTextA Lib "user32" (ByVal lParam As Long, ByVal lpString As LPSTR, ByVal cchSize As Long) As Long
+Declare Function GetKeyNameTextW Lib "user32" (ByVal lParam As Long, ByVal lpString As LPWSTR, ByVal cchSize As Long) As Long
+#ifdef UNICODE
+Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextW" (ByVal lParam As Long, ByVal lpString As LPWSTR, ByVal cchSize As Long) As Long
+#else
+Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpString As LPSTR, ByVal cchSize As Long) As Long
+#endif ' !UNICODE
+Declare Function GetKeyboardType Lib "user32" (ByVal nTypeFlag As Long) As Long
+
+Declare Function ToAscii Lib "user32" (ByVal uVirtKey As DWord, ByVal uScanCode As DWord, ByVal lpKeyState As *Byte, ByVal lpChar As *WORD, ByVal uFlags As DWord) As Long
+Declare Function ToAsciiEx Lib "user32" (ByVal uVirtKey As DWord, ByVal uScanCode As DWord, ByVal lpKeyState As *Byte, ByVal lpChar As *WORD, ByVal uFlags As DWord, ByVal dwhkl As HKL) As Long
+
+Declare Function ToUnicode Lib "user32" (ByVal uVirtKey As DWord, ByVal uScanCode As DWord, ByVal lpKeyState As *Byte, ByVal pwszBuff As LPWSTR, ByVal cchBuff As Long, ByVal wFlags As DWord) As Long
+
+Declare Function OemKeyScan Lib "user32" (ByVal wOemChar As Word) As DWord
+
+Declare Function VkKeyScanA Lib "user32" (ByVal ch As SByte) As Integer
+Declare Function VkKeyScanW Lib "user32" (ByVal ch As Word) As Integer
+#ifdef UNICODE
+Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanW" (ByVal ch As Word) As Integer
+#else
+Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" (ByVal ch As SByte) As Integer
+#endif ' !UNICODE
+
+Declare Function VkKeyScanExA Lib "user32" (ByVal ch As SByte, ByVal dwhkl As HKL) As Integer
+Declare Function VkKeyScanExW Lib "user32" (ByVal ch As Word, ByVal dwhkl As HKL) As Integer
+#ifdef UNICODE
+Declare Function VkKeyScanEx Lib "user32" Alias "VkKeyScanW" (ByVal ch As Word, ByVal dwhkl As HKL) As Integer
+#else
+Declare Function VkKeyScanEx Lib "user32" Alias "VkKeyScanA" (ByVal ch As SByte, ByVal dwhkl As HKL) As Integer
+#endif ' !UNICODE
+
+Type MOUSEINPUT
+	dx As Long
+	dy As Long
+	mouseData As DWord
+	dwFlags As DWord
+	time As DWord
+	dwExtraInfo As ULONG_PTR
+End Type
+TypeDef PMOUSEINPUT = *MOUSEINPUT
+TypeDef LPMOUSEINPUT = *MOUSEINPUT
+
+Type KEYBDINPUT
+	wVk As Word
+	wScan As Word
+	dwFlags As DWord
+	time As DWord
+	dwExtraInfo As ULONG_PTR
+End Type
+TypeDef PKEYBDINPUT = *KEYBDINPUT
+TypeDef LPKEYBDINPUT = *KEYBDINPUT
+
+Type HARDWAREINPUT
+	uMsg As DWord
+	wParamL As Word
+	wParamH As Word
+End Type
+TypeDef PHARDWAREINPUT = *HARDWAREINPUT
+TypeDef LPHARDWAREINPUT = *HARDWAREINPUT
+
+Const INPUT_MOUSE = 0
+Const INPUT_KEYBOARD = 1
+Const INPUT_HARDWARE = 2
+
+Type INPUT
+	types As DWord
+#ifdef _WIN64
+	union[6] As DWord
+#else
+	union[5] As DWord
+#endif
+/*	Union
+		mi As MOUSEINPUT
+		ki As KEYBDINPUT
+		hi As HARDWAREINPUT
+	End Union*/
+End Type
+TypeDef PINPUT = *INPUT
+TypeDef LPINPUT = *INPUT
+
+Declare Function SendInput Lib "user32" (ByVal cInputs As DWord, ByVal pInputs As *INPUT, ByVal cbSize As Long) As DWord
+
+Declare Function MapVirtualKeyA Lib "user32" (ByVal uCode As DWord, ByVal uMapType As DWord) As DWord
+Declare Function MapVirtualKeyW Lib "user32" (ByVal uCode As DWord, ByVal uMapType As DWord) As DWord
+#ifdef UNICODE
+Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyW" (ByVal uCode As DWord, ByVal uMapType As DWord) As DWord
+#else
+Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal uCode As DWord, ByVal uMapType As DWord) As DWord
+#endif ' !UNICODE
+
+Declare Function MapVirtualKeyExA Lib "user32" (ByVal uCode As DWord, ByVal uMapType As DWord, ByVal dwhkl As HKL) As DWord
+Declare Function MapVirtualKeyExW Lib "user32" (ByVal uCode As DWord, ByVal uMapType As DWord, ByVal dwhkl As HKL) As DWord
+#ifdef UNICODE
+Declare Function MapVirtualKeyEx Lib "user32" Alias "MapVirtualKeyExW" (ByVal uCode As DWord, ByVal uMapType As DWord, ByVal dwhkl As HKL) As DWord
+#else
+Declare Function MapVirtualKeyEx Lib "user32" Alias "MapVirtualKeyExA" (ByVal uCode As DWord, ByVal uMapType As DWord, ByVal dwhkl As HKL) As DWord
+#endif ' !UNICODE
+
+Declare Function GetInputState Lib "user32" () As BOOL
+Declare Function GetQueueStatus Lib "user32" (ByVal flags As DWord) As DWord
+
+Const QS_KEY = &H0001
+Const QS_MOUSEMOVE = &H0002
+Const QS_MOUSEBUTTON = &H0004
+Const QS_POSTMESSAGE = &H0008
+Const QS_TIMER = &H0010
+Const QS_PAINT = &H0020
+Const QS_SENDMESSAGE = &H0040
+Const QS_HOTKEY = &H0080
+Const QS_ALLPOSTMESSAGE = &H0100
+'Const QS_RAWINPUT = &H0400
+
+Const QS_MOUSE = (QS_MOUSEMOVE or QS_MOUSEBUTTON)
+Const QS_INPUT = (QS_MOUSE or QS_KEY /* or QS_RAWINPUT*/)
+Const QS_ALLEVENTS = (QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY)
+Const QS_ALLINPUT = (QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY or QS_SENDMESSAGE)
+
+Declare Function MsgWaitForMultipleObjects Lib "user32" (ByVal nCount As DWord, ByVal pHandles As *HANDLE, ByVal fWaitAll As BOOL, ByVal dwMilliseconds As DWord, ByVal dwWakeMask As DWord) As DWord
+Declare Function MsgWaitForMultipleObjectsEx Lib "user32" (ByVal nCount As DWord, ByVal pHandles As *HANDLE, ByVal dwMilliseconds As DWord, ByVal dwWakeMask As DWord, ByVal dwFlags As DWord) As DWord
+
+Const MWMO_WAITALL = &H0001
+Const MWMO_ALERTABLE = &H0002
+Const MWMO_INPUTAVAILABLE = &H0004
+
+
 Declare Function SetMenu Lib "user32" (hWnd As HWND, hMenu As HMENU) As BOOL
+
+Declare Function ChangeMenuA Lib "user32" (ByVal hMenu As HMENU, ByVal cmd As DWord, ByVal lpszNewItem As LPCSTR, ByVal cmdInsert As DWord, ByVal flags As DWord) As BOOL
+Declare Function ChangeMenuW Lib "user32" (ByVal hMenu As HMENU, ByVal cmd As DWord, ByVal lpszNewItem As LPCWSTR, ByVal cmdInsert As DWord, ByVal flags As DWord) As BOOL
+#ifdef UNICODE
+Declare Function ChangeMenu Lib "user32" Alias "ChangeMenuW" (ByVal hMenu As HMENU, ByVal cmd As DWord, ByVal lpszNewItem As LPCWSTR, ByVal cmdInsert As DWord, ByVal flags As DWord) As BOOL
+#else
+Declare Function ChangeMenu Lib "user32" Alias "ChangeMenuA" (ByVal hMenu As HMENU, ByVal cmd As DWord, ByVal lpszNewItem As LPCSTR, ByVal cmdInsert As DWord, ByVal flags As DWord) As BOOL
+#endif ' !UNICODE
+
+Declare Function HiliteMenuItem Lib "user32" (ByVal hWnd As HWND, ByVal hMenu As HMENU, ByVal uIDHiliteItem As DWord, ByVal uHilite As DWord) As BOOL
+
+Declare Function GetMenuStringA Lib "user32" (ByVal hMenu As HMENU, ByVal uIDItem As DWord, ByVal lpString As LPSTR, ByVal cchMax As Long, ByVal flags As DWord) As Long
+Declare Function GetMenuStringW Lib "user32" (ByVal hMenu As HMENU, ByVal uIDItem As DWord, ByVal lpString As LPWSTR, ByVal cchMax As Long, ByVal flags As DWord) As Long
+#ifdef UNICODE
+Declare Function GetMenuString Lib "user32" Alias "GetMenuStringW" (ByVal hMenu As HMENU, ByVal uIDItem As DWord, ByVal lpString As LPWSTR, ByVal cchMax As Long, ByVal flags As DWord) As Long
+#else
+Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As HMENU, ByVal uIDItem As DWord, ByVal lpString As LPSTR, ByVal cchMax As Long, ByVal flags As DWord) As Long
+#endif ' !UNICODE
+
+Declare Function GetMenuState Lib "user32" (ByVal hMenu As HMENU, ByVal uId As DWord, ByVal uFlags As DWord) As DWord
+
+Declare Function AppendMenuA Lib "user32" (ByVal hMenu As HMENU, ByVal uFlags As DWord, ByVal uIDNewItem As ULONG_PTR, ByVal lpNewItem As LPCSTR) As BOOL
+Declare Function AppendMenuW Lib "user32" (ByVal hMenu As HMENU, ByVal uFlags As DWord, ByVal uIDNewItem As ULONG_PTR, ByVal lpNewItem As LPCWSTR) As BOOL
+#ifdef UNICODE
+Declare Function AppendMenu Lib "user32" Alias "AppendMenuW" (ByVal hMenu As HMENU, ByVal uFlags As DWord, ByVal uIDNewItem As ULONG_PTR, ByVal lpNewItem As LPCWSTR) As BOOL
+#else
+Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As HMENU, ByVal uFlags As DWord, ByVal uIDNewItem As ULONG_PTR, ByVal lpNewItem As LPCSTR) As BOOL
+#endif ' !UNICODE
+
+Declare Function ModifyMenuA Lib "user32" (ByVal hMnu As HMENU, ByVal uPosition As DWord, ByVal uFlags As DWord, ByVal uIDNewItem As ULONG_PTR, ByVal lpNewItem As LPCSTR) As BOOL
+Declare Function ModifyMenuW Lib "user32" (ByVal hMnu As HMENU, ByVal uPosition As DWord, ByVal uFlags As DWord, ByVal uIDNewItem As ULONG_PTR, ByVal lpNewItem As LPCWSTR) As BOOL
+#ifdef UNICODE
+Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuW" (ByVal hMnu As HMENU, ByVal uPosition As DWord, ByVal uFlags As DWord, ByVal uIDNewItem As ULONG_PTR, ByVal lpNewItem As LPCWSTR) As BOOL
+#else
+Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMnu As HMENU, ByVal uPosition As DWord, ByVal uFlags As DWord, ByVal uIDNewItem As ULONG_PTR, ByVal lpNewItem As LPCSTR) As BOOL
+#endif ' !UNICODE
+
+Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As HMENU, ByVal uPosition As DWord, ByVal uFlags As DWord, ByVal hBitmapUnchecked As HBITMAP, ByVal hBitmapChecked As HBITMAP) As BOOL
+
+Declare Function GetMenuCheckMarkDimensions Lib "user32" () As Long
+
+Type TPMPARAMS
+	cbSize As DWord
+	rcExclude As RECT
+End Type
+TypeDef LPTPMPARAMS = *TPMPARAMS
+
+Declare Function TrackPopupMenuEx Lib "user32" (ByVal hMenu As HMENU, ByVal fuFlags As DWord, ByVal x As Long, ByVal y As Long, ByVal hwnd As HWND, ByVal lptpm As *TPMPARAMS) As BOOL
+Declare Function GetMenuItemRect Lib "user32" (ByVal hWnd As HWND, ByVal hMenu As HMENU, ByVal uItem As DWord, ByRef lprcItem As RECT) As BOOL
+Declare Function MenuItemFromPoint Lib "user32" (ByVal hWnd As HWND, ByVal hMenu As HMENU, ByRef ptScreen As POINTAPI) As Long
+
 Declare Function SetMenuContextHelpId Lib "user32" (hmenu As HMENU, dwContextHelpId As DWord) As BOOL
 Declare Function SetMenuDefaultItem Lib "user32" (hMenu As HMENU, uItem As DWord, fByPos As DWord) As BOOL
@@ -1178,7 +1501,55 @@
 Declare Function SetParent Lib "user32" (hWndChild As HWND, hWndNewParent As HWND) As HWND
 Declare Function SetProp Lib "user32" Alias _FuncName_SetProp (hWnd As HWND, pString As PCTSTR, hData As HANDLE) As BOOL
+
+TypeDef PROPENUMPROCEXA = *Function(ByVal hwnd As HWND, ByVal lpszString As LPSTR, ByVal hData As HANDLE, ByVal dwData As ULONG_PTR) As BOOL
+TypeDef PROPENUMPROCEXW = *Function(ByVal hwnd As HWND, ByVal lpszString As LPWSTR, ByVal hData As HANDLE, ByVal dwData As ULONG_PTR) As BOOL
+#ifdef UNICODE
+TypeDef PROPENUMPROCEX = PROPENUMPROCEXW
+#else
+TypeDef PROPENUMPROCEX = PROPENUMPROCEXA
+#endif ' !UNICODE
+
+Declare Function EnumPropsExA Lib "user32" (ByVal hWnd As HWND, ByVal lpEnumFunc As PROPENUMPROCEXA, ByVal lParam As LPARAM) As Long
+Declare Function EnumPropsExW Lib "user32" (ByVal hWnd As HWND, ByVal lpEnumFunc As PROPENUMPROCEXW, ByVal lParam As LPARAM) As Long
+#ifdef UNICODE
+Declare Function EnumPropsEx Lib "user32" Alias "EnumPropsExW" (ByVal hWnd As HWND, ByVal lpEnumFunc As PROPENUMPROCEXW, ByVal lParam As LPARAM) As Long
+#else
+Declare Function EnumPropsEx Lib "user32" Alias "EnumPropsExA" (ByVal hWnd As HWND, ByVal lpEnumFunc As PROPENUMPROCEXA, ByVal lParam As LPARAM) As Long
+#endif ' !UNICODE
+
+
+TypeDef PROPENUMPROCA = *Function(ByVal hwnd As HWND, ByVal lpszString As LPCSTR, ByVal hData As HANDLE) As BOOL
+TypeDef PROPENUMPROCW = *Function(ByVal hwnd As HWND, ByVal lpszString As LPCWSTR, ByVal hData As HANDLE) As BOOL
+#ifdef UNICODE
+TypeDef PROPENUMPROC = PROPENUMPROCW
+#else
+TypeDef PROPENUMPROC = PROPENUMPROCA
+#endif ' !UNICODE
+
+Declare Function EnumPropsA Lib "user32" (ByVal hWnd As HWND, ByVal lpEnumFunc As PROPENUMPROCA) As Long
+Declare Function EnumPropsW Lib "user32" (ByVal hWnd As HWND, ByVal lpEnumFunc As PROPENUMPROCW) As Long
+#ifdef UNICODE
+Declare Function EnumProps Lib "user32" Alias "EnumPropsW" (ByVal hWnd As HWND, ByVal lpEnumFunc As PROPENUMPROCW) As Long
+#else
+Declare Function EnumProps Lib "user32" Alias "EnumPropsA" (ByVal hWnd As HWND, ByVal lpEnumFunc As PROPENUMPROCA) As Long
+#endif ' !UNICODE
+
 Declare Function SetRect Lib "User32" (ByRef rc As RECT, xLeft As Long, yTop As Long, xRight As Long, yBottom As Long) As Long
+Declare Function SetRectEmpty Lib "user32" (ByRef lprc As RECT) As BOOL
+Declare Function CopyRect Lib "user32" (ByRef lprcDst As RECT, ByRef lprcSrc As RECT) As BOOL
+Declare Function InflateRect Lib "user32" (ByRef lprc As RECT, ByVal dx As Long, ByVal dy As Long) As BOOL
+Declare Function IntersectRect Lib "user32" (ByRef lprcDst As RECT, ByRef lprcSrc1 As RECT, ByRef lprcSrc2 As RECT) As BOOL
+Declare Function UnionRect Lib "user32" (ByRef lprcDst As RECT, ByRef lprcSrc1 As RECT, ByRef lprcSrc2 As RECT) As BOOL
+Declare Function SubtractRect Lib "user32" (ByRef lprcDst As RECT, ByRef lprcSrc1 As RECT, ByRef lprcSrc2 As RECT) As BOOL
+Declare Function OffsetRect Lib "user32" (ByRef lprc As RECT, ByVal dx As Long, ByVal dy As Long) As BOOL
+Declare Function IsRectEmpty Lib "user32" (ByRef lprc As RECT) As BOOL
+Declare Function EqualRect Lib "user32" (ByRef lprc1 As RECT, ByRef lprc2 As RECT) As BOOL
+Declare Function PtInRect Lib "user32" (ByRef lprc As RECT, ByRef pt As POINTAPI) As BOOL
 Declare Function SetScrollInfo Lib "user32" (hWnd As HWND, fnBar As Long, ByRef lpsi As SCROLLINFO, bRedraw As Long) As BOOL
 Declare Function SetSysColors Lib "user32" (cElements As Long, lpaElements As *DWord, lpaRgbValues As *DWord) As BOOL
+Declare Function SetSystemCursor Lib "user32" (ByVal hcur As HCURSOR, ByVal id As DWord) As BOOL
+
+Const USER_TIMER_MAXIMUM = &H7FFFFFFF
+Const USER_TIMER_MINIMUM = &H0000000A
 
 TypeDef TIMERPROC = *Sub(hwnd As HWND, msg As DWord, idEvent As ULONG_PTR, dwTime As DWord)
@@ -1519,7 +1890,244 @@
 Declare Function WindowFromDC Lib "user32" (hDC As HDC) As HWND
 Declare Function WindowFromPoint Lib "user32" (ptX As Long, ptY As Long) As HWND
+
+TypeDef HELPPOLY = DWord
+
+Type MULTIKEYHELPA
+	mkSize As DWord
+	mkKeylist As SByte
+	szKeyphrase[ELM(1)] As SByte
+End Type
+TypeDef PMULTIKEYHELPA=*MULTIKEYHELPA
+TypeDef LPMULTIKEYHELPA=*MULTIKEYHELPA
+Type MULTIKEYHELPW
+	mkSize As DWord
+	mkKeylist As Word
+	szKeyphrase[ELM(1)] As Word
+End Type
+TypeDef PMULTIKEYHELPW=*MULTIKEYHELPW
+TypeDef LPMULTIKEYHELPW=*MULTIKEYHELPW
+
+#ifdef UNICODE
+TypeDef MULTIKEYHELP = MULTIKEYHELPW
+TypeDef PMULTIKEYHELP = PMULTIKEYHELPW
+TypeDef LPMULTIKEYHELP = LPMULTIKEYHELPW
+#else
+TypeDef MULTIKEYHELP = MULTIKEYHELPA
+TypeDef PMULTIKEYHELP = PMULTIKEYHELPA
+TypeDef LPMULTIKEYHELP = LPMULTIKEYHELPA
+#endif ' UNICODE
+
+Type HELPWININFOA
+	wStructSize As Long
+	x As Long
+	y As Long
+	dx As Long
+	dy As Long
+	wMax As Long
+	rgchMember[ELM(2)] As SByte
+End Type
+TypeDef PHELPWININFOA=*HELPWININFOA
+TypeDef LPHELPWININFOA=*HELPWININFOA
+Type HELPWININFOW
+	wStructSize As Long
+	x As Long
+	y As Long
+	dx As Long
+	dy As Long
+	wMax As Long
+	rgchMember[ELM(2)] As Word
+End Type
+TypeDef PHELPWININFOW=*HELPWININFOW
+TypeDef LPHELPWININFOW=*HELPWININFOW
+
+#ifdef UNICODE
+TypeDef HELPWININFO = HELPWININFOW
+TypeDef PHELPWININFO = PHELPWININFOW
+TypeDef LPHELPWININFO = LPHELPWININFOW
+#else
+TypeDef HELPWININFO = HELPWININFOA
+TypeDef PHELPWININFO = PHELPWININFOA
+TypeDef LPHELPWININFO = LPHELPWININFOA
+#endif ' UNICODE
+
+Const HELP_CONTEXT = &H0001
+Const HELP_QUIT = &H0002
+Const HELP_INDEX = &H0003
+Const HELP_CONTENTS = &H0003
+Const HELP_HELPONHELP = &H0004
+Const HELP_SETINDEX = &H0005
+Const HELP_SETCONTENTS = &H0005
+Const HELP_CONTEXTPOPUP = &H0008
+Const HELP_FORCEFILE = &H0009
+Const HELP_KEY = &H0101
+Const HELP_COMMAND = &H0102
+Const HELP_PARTIALKEY = &H0105
+Const HELP_MULTIKEY = &H0201
+Const HELP_SETWINPOS = &H0203
+Const HELP_CONTEXTMENU = &H000a
+Const HELP_FINDER = &H000b
+Const HELP_WM_HELP = &H000c
+Const HELP_SETPOPUP_POS = &H000d
+Const HELP_TCARD = &H8000
+Const HELP_TCARD_DATA = &H0010
+Const HELP_TCARD_OTHER_CALLER = &H0011
+
+Const IDH_NO_HELP = 28440
+Const IDH_MISSING_CONTEXT = 28441
+Const IDH_GENERIC_HELP_BUTTON = 28442
+Const IDH_OK = 28443
+Const IDH_CANCEL = 28444
+Const IDH_HELP = 28445
+
+Declare Function WinHelpA Lib "user32" (ByVal hWndMain As HWND, ByVal lpszHelp As LPCSTR, ByVal uCommand As DWord, ByVal dwData As ULONG_PTR) As BOOL
+Declare Function WinHelpW Lib "user32" (ByVal hWndMain As HWND, ByVal lpszHelp As LPCWSTR, ByVal uCommand As DWord, ByVal dwData As ULONG_PTR) As BOOL
+#ifdef UNICODE
+Declare Function WinHelp Lib "user32" Alias "WinHelpW" (ByVal hWndMain As HWND, ByVal lpszHelp As LPCWSTR, ByVal uCommand As DWord, ByVal dwData As ULONG_PTR) As BOOL
+#else
+Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hWndMain As HWND, ByVal lpszHelp As LPCSTR, ByVal uCommand As DWord, ByVal dwData As ULONG_PTR) As BOOL
+#endif ' !UNICODE
+
 Declare Function wsprintf cdecl Lib "user32" Alias _FuncName_wsprintf (pText As PTSTR, pFormat As PCTSTR, ...) As Long
 Declare Function wvsprintf Lib "user32" Alias _FuncName_wvsprintf (pOutput As PTSTR, pFormat As PCTSTR, arglist As DWordPtr) As Long
 
-
+Type GUITHREADINFO
+	cbSize As DWord
+	flags As DWord
+	hwndActive As HWND
+	hwndFocus As HWND
+	hwndCapture As HWND
+	hwndMenuOwner As HWND
+	hwndMoveSize As HWND
+	hwndCaret As HWND
+	rcCaret As RECT
+End Type
+TypeDef PGUITHREADINFO = *GUITHREADINFO
+TypeDef LPGUITHREADINFO = *GUITHREADINFO
+
+Const GUI_CARETBLINKING = &H00000001
+Const GUI_INMOVESIZE = &H00000002
+Const GUI_INMENUMODE = &H00000004
+Const GUI_SYSTEMMENUMODE = &H00000008
+Const GUI_POPUPMENUMODE = &H00000010
+Const GUI_16BITTASK = &H00000020
+
+Declare Function GetGUIThreadInfo Lib "user32" (ByVal idThread As DWord, ByRef pgui As GUITHREADINFO) As BOOL
+
+Const STATE_SYSTEM_UNAVAILABLE = &H00000001
+Const STATE_SYSTEM_SELECTED = &H00000002
+Const STATE_SYSTEM_FOCUSED = &H00000004
+Const STATE_SYSTEM_PRESSED = &H00000008
+Const STATE_SYSTEM_CHECKED = &H00000010
+Const STATE_SYSTEM_MIXED = &H00000020
+Const STATE_SYSTEM_INDETERMINATE = STATE_SYSTEM_MIXED
+Const STATE_SYSTEM_READONLY = &H00000040
+Const STATE_SYSTEM_HOTTRACKED = &H00000080
+Const STATE_SYSTEM_DEFAULT = &H00000100
+Const STATE_SYSTEM_EXPANDED = &H00000200
+Const STATE_SYSTEM_COLLAPSED = &H00000400
+Const STATE_SYSTEM_BUSY = &H00000800
+Const STATE_SYSTEM_FLOATING = &H00001000
+Const STATE_SYSTEM_MARQUEED = &H00002000
+Const STATE_SYSTEM_ANIMATED = &H00004000
+Const STATE_SYSTEM_INVISIBLE = &H00008000
+Const STATE_SYSTEM_OFFSCREEN = &H00010000
+Const STATE_SYSTEM_SIZEABLE = &H00020000
+Const STATE_SYSTEM_MOVEABLE = &H00040000
+Const STATE_SYSTEM_SELFVOICING = &H00080000
+Const STATE_SYSTEM_FOCUSABLE = &H00100000
+Const STATE_SYSTEM_SELECTABLE = &H00200000
+Const STATE_SYSTEM_LINKED = &H00400000
+Const STATE_SYSTEM_TRAVERSED = &H00800000
+Const STATE_SYSTEM_MULTISELECTABLE = &H01000000
+Const STATE_SYSTEM_EXTSELECTABLE = &H02000000
+Const STATE_SYSTEM_ALERT_LOW = &H04000000
+Const STATE_SYSTEM_ALERT_MEDIUM = &H08000000
+Const STATE_SYSTEM_ALERT_HIGH = &H10000000
+Const STATE_SYSTEM_PROTECTED = &H20000000
+Const STATE_SYSTEM_VALID = &H3FFFFFFF
+
+Const CCHILDREN_TITLEBAR = 5
+Const CCHILDREN_SCROLLBAR = 5
+
+
+Type CURSORINFO
+	cbSize As DWord
+	flags As DWord
+	hCursor As HCURSOR
+	ptScreenPos As POINTAPI
+End Type
+TypeDef PCURSORINFO=*CURSORINFO
+TypeDef LPCURSORINFO=*CURSORINFO
+
+Const CURSOR_SHOWING = &H00000001
+
+Declare Function GetCursorInfo Lib "user32" (ByRef pci As CURSORINFO) As BOOL
+
+
+Type MENUBARINFO
+	cbSize As DWord
+	rcBar As RECT
+	hMenu As HMENU
+	hwndMenu As HWND
+	fields As BOOL
+/*	fBarFocused As BOOL
+	fFocused As BOOL*/
+End Type
+TypeDef PMENUBARINFO=*MENUBARINFO
+TypeDef LPMENUBARINFO=*MENUBARINFO
+
+Declare Function GetMenuBarInfo Lib "user32" (ByVal hwnd As HWND, ByVal idObject As Long, ByVal idItem As Long, ByRef pmbi As MENUBARINFO) As BOOL
+
+Type COMBOBOXINFO
+	cbSize As DWord
+	rcItem As RECT
+	rcButton As RECT
+	stateButton As DWord
+	hwndCombo As HWND
+	hwndItem As HWND
+	hwndList As HWND
+End Type
+TypeDef PCOMBOBOXINFO=*COMBOBOXINFO
+TypeDef LPCOMBOBOXINFO=*COMBOBOXINFO
+
+Declare Function GetComboBoxInfo Lib "user32" (ByVal hwndCombo As HWND, ByRef pcbi As COMBOBOXINFO) As BOOL
+
+
+Const GA_PARENT = 1
+Const GA_ROOT = 2
+Const GA_ROOTOWNER = 3
+
+Declare Function GetAncestor Lib "user32" (ByVal hwnd As HWND, ByVal gaFlags As DWord) As HWND
+
+
+Declare Function RealGetWindowClassA Lib "user32" (ByVal hwnd As HWND, ByVal ptszClassName As LPSTR, ByVal cchClassNameMax As DWord) As DWord
+Declare Function RealGetWindowClassW Lib "user32" (ByVal hwnd As HWND, ByVal ptszClassName As LPWSTR, ByVal cchClassNameMax As DWord) As DWord
+#ifdef UNICODE
+Declare Function RealGetWindowClass Lib "user32" Alias "RealGetWindowClassW" (ByVal hwnd As HWND, ByVal ptszClassName As LPWSTR, ByVal cchClassNameMax As DWord) As DWord
+#else
+Declare Function RealGetWindowClass Lib "user32" Alias "RealGetWindowClassA" (ByVal hwnd As HWND, ByVal ptszClassName As LPSTR, ByVal cchClassNameMax As DWord) As DWord
+#endif ' !UNICODE
+
+
+Type ALTTABINFO
+	cbSize As DWord
+	cItems As Long
+	cColumns As Long
+	cRows As Long
+	iColFocus As Long
+	iRowFocus As Long
+	cxItem As Long
+	cyItem As Long
+	ptStart As POINTAPI
+End Type
+TypeDef PALTTABINFO=*ALTTABINFO
+TypeDef LPALTTABINFO=*ALTTABINFO
+
+Declare Function GetAltTabInfoA Lib "user32" (ByVal hwnd As HWND, ByVal iItem As Long, ByRef pati As ALTTABINFO, ByVal pszItemText As LPSTR, ByVal cchItemText As DWord) As BOOL
+Declare Function GetAltTabInfoW Lib "user32" (ByVal hwnd As HWND, ByVal iItem As Long, ByRef pati As ALTTABINFO, ByVal pszItemText As LPWSTR, ByVal cchItemText As DWord) As BOOL
+#ifdef UNICODE
+Declare Function GetAltTabInfo Lib "user32" Alias "GetAltTabInfoW" (ByVal hwnd As HWND, ByVal iItem As Long, ByRef pati As ALTTABINFO, ByVal pszItemText As LPWSTR, ByVal cchItemText As DWord) As BOOL
+#else
+Declare Function GetAltTabInfo Lib "user32" Alias "GetAltTabInfoA" (ByVal hwnd As HWND, ByVal iItem As Long, ByRef pati As ALTTABINFO, ByVal pszItemText As LPSTR, ByVal cchItemText As DWord) As BOOL
+#endif ' !UNICODE
 #endif '_INC_WINDOW
