看看微软pwinuser.h的头文件吧,里面有hook的API.
- #ifndef _PRIV_WINUSER_
- #define _PRIV_WINUSER_
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #include <keybd.h>
-
-
- #define WM_QM_ACTIVATE 0x60
- #define WM_HOOK_DO_CALLBACK 0x61
- #define WM_SYSCOPYDATA 0x62
-
-
- #define WMSCD_CHAR_RANKED_ALTS 0x01
- #define WMSCD_DIALOGSCROLLBAR 0x02
-
-
-
-
- #if(WINVER >= 0x0400)
-
- #endif /* WINVER >= 0x0400 */
-
-
- #define FLASTKEY 0x80
-
-
- #define SWP_SYSTEMCAPTURE 0x80000000
- #define SWP_FINDNEWFOREGROUND 0x40000000
- #define SWP_MAXMIN 0x20000000
-
-
-
- #define HWND_TOPLEVELVISIBLEORPRE30 ((HWND)0xfffd) // top level windows that are visible on screen or ver < 3.0
- #define HWND_TOPLEVELCHILD ((HWND)0xfffb) // top level windows with the WS_CHILD bit set
-
-
-
-
- #define CF_METAFILEPICT 3
- #define CF_ENHMETAFILE 14
- #define CF_HDROP 15
- #define IMAGE_ENHMETAFILE 3
-
- void WINAPI SystemIdleTimerReset( void );
-
- HWND WINAPI SetKeyboardTarget( HWND hWnd );
- HWND WINAPI GetKeyboardTarget( VOID );
- KEY_STATE_FLAGS WINAPI GetAsyncShiftFlags(UINT VKey);
- WINUSERAPI void WINAPI AccessibilitySoundSentryEvent(void);
- BOOL WINAPI ImmEnableIME(DWORD);
- HKL WINAPI ImmGetKeyboardLayout(DWORD dwThreadId);
-
-
-
-
-
-
-
- #define IMM_GETTHREADHKL 1
- #define IMM_SETTHREADHKL 2
- #define IMM_GETTHREADPREVHKL 3
- #define IMM_SETTHREADPREVHKL 4
-
- #define IMM_SETPROCESSHKL 6
-
- #define IMM_SET_THREAD_IME_DEFAULT_HWND 8
- #define IMM_GET_LAYMGR_STATUS 9
-
-
-
- void AudioUpdateFromRegistry(void);
-
-
- #define NWUS_DOUBLE_TAP_CHANGED 1
- #define NWUS_KEYBD_REPEAT_CHANGED 2
- #define NWUS_MAX_IDLE_TIME_CHANGED 3
-
- #define SPI_SETNOSEHFORVALIDATION 250
-
- #define MOD_KEYUP_ALWAYS 0x2000
-
- typedef struct tagPLATFORMVERSION {
- DWORD dwMajor;
- DWORD dwMinor;
- } PLATFORMVERSION, *PPLATFORMVERSION;
-
-
- #define SPI_PROJECT1 224
- #define SPI_PROJECT2 225
- #define SPI_PROJECT3 226
- #define SPI_PROJECT4 227
- #define SPI_PROJECT5 228
- #define SPI_PROJECT6 229
- #define SPI_PROJECT7 230
- #define SPI_PROJECT8 231
- #define SPI_PROJECT9 232
- #define SPI_PROJECT10 233
- #define SPI_PROJECT11 234
- #define SPI_PROJECT12 235
- #define SPI_PROJECT13 236
- #define SPI_PROJECT14 237
- #define SPI_PROJECT15 238
- #define SPI_PROJECT16 239
-
- #define SPI_GETPLATFORMVERSION SPI_PROJECT1
-
- #define VK_APP_LAUNCH1 0xC1
- #define VK_APP_LAUNCH2 0xC2
- #define VK_APP_LAUNCH3 0xC3
- #define VK_APP_LAUNCH4 0xC4
- #define VK_APP_LAUNCH5 0xC5
- #define VK_APP_LAUNCH6 0xC6
- #define VK_APP_LAUNCH7 0xC7
- #define VK_APP_LAUNCH8 0xC8
- #define VK_APP_LAUNCH9 0xC9
- #define VK_APP_LAUNCH10 0xCA
- #define VK_APP_LAUNCH11 0xCB
- #define VK_APP_LAUNCH12 0xCC
- #define VK_APP_LAUNCH13 0xCD
- #define VK_APP_LAUNCH14 0xCE
- #define VK_APP_LAUNCH15 0xCF
-
-
-
-
- void WINAPI NotifyWinUserSystem( UINT uEvent );
-
- BOOL WINAPI RegisterTaskBar (HWND hwndTaskbar);
- BOOL WINAPI RegisterTaskBarEx (HWND hwndTaskbar, BOOL bTaskBarOnTop);
- BOOL WINAPI RegisterDesktop (HWND hwndDesktop);
-
- WINUSERAPI BOOL WINAPI RectangleAnimation ( HWND hWnd, LPCRECT prc, BOOL fMaximize ) ;
- void WINAPI ShellModalEnd( void );
-
-
-
- void GwesPowerOffSystem (void);
- BOOL GwesPowerDown (void);
- void GwesPowerUp (BOOL);
-
- void WINAPI BatteryGetLifeTimeInfo ( LPSYSTEMTIME pstLastChange, DWORD * pcmsCpuUsage, DWORD * pcmsPreviousCpuUsage );
- LONG WINAPI BatteryDrvrGetLevels ( void );
- BOOL WINAPI BatteryDrvrSupportsChangeNotification ( void );
- void WINAPI BatteryNotifyOfTimeChange ( BOOL fForward, FILETIME * pftDelta );
-
-
- #define CS_SYSTEMCLASS 0x80000000
-
-
-
- #define DFC_MENU 2
-
-
- #define DFC_SPINNER 6
-
-
-
-
-
-
-
- #define DFCS_CAPTIONROUNDOKBTN_WINCE 0x0010
- #define DFCS_CAPTIONROUNDCLOSE_WINCE 0x0020
- #define DFCS_CAPTIONALL_WINCE 0x00F0
-
- #define DFCS_MENUARROW 0x0000
- #define DFCS_MENUCHECK 0x0001
- #define DFCS_MENUBULLET 0x0002
- #define DFCS_MENUARROWRIGHT 0x0004
-
-
-
-
-
-
- #define DFCS_SCROLLSIZEGRIP 0x0008
- #define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
-
-
- #define DFCS_BUTTONRADIOIMAGE 0x0001
- #define DFCS_BUTTONRADIOMASK 0x0002
-
-
-
-
- #define DFCS_SPINNERUP 0x0000
- #define DFCS_SPINNERDOWN 0x0001
- #define DFCS_SPINNERLEFT 0x0002
- #define DFCS_SPINNERRIGHT 0x0003
- #define DFCS_SPINNERBUTTON 0x0010
- #define DFCS_SPINNERNOBORDER 0x0020
-
-
-
-
- #define DFCS_ADJUSTRECT 0x2000
- #define DFCS_FLAT 0x4000
- #define DFCS_MONO 0x8000
-
- #define MFT_NONOWNERSTRING 0x80000000L
-
-
-
-
- #define WM_NCCREATE 0x0081
- #define WM_NCDESTROY 0x0082
- #define WM_NCCALCSIZE 0x0083
- #define WM_NCHITTEST 0x0084
- #define WM_NCPAINT 0x0085
- #define WM_NCACTIVATE 0x0086
-
- #define WM_NCMOUSEFIRST 0x00A0
- #define WM_NCMOUSEMOVE 0x00A0
- #define WM_NCLBUTTONDOWN 0x00A1
- #define WM_NCLBUTTONUP 0x00A2
- #define WM_NCLBUTTONDBLCLK 0x00A3
- #define WM_NCRBUTTONDOWN 0x00A4
- #define WM_NCRBUTTONUP 0x00A5
- #define WM_NCRBUTTONDBLCLK 0x00A6
- #define WM_NCMBUTTONDOWN 0x00A7
- #define WM_NCMBUTTONUP 0x00A8
- #define WM_NCMBUTTONDBLCLK 0x00A9
-
-
- #define WM_NCXBUTTONDOWN 0x00AB
- #define WM_NCXBUTTONUP 0x00AC
- #define WM_NCXBUTTONDBLCLK 0x00AD
- #define WM_NCMOUSELAST 0x00AD
-
- #ifdef FAREAST
-
- #define CS_IME 0x00010000
- #endif // FAREAST
-
- #ifdef _WIN32_WCE_EMULATION
- #ifdef CS_IME
- #undef CS_IME
- #endif
- #define CS_IME 0x00010000
- #endif
-
-
- #ifdef __cplusplus
- #define EXTERN_C extern "C"
- #else
- #define EXTERN_C extern
- #endif /*__cplusplus*/
- #define INTAPI EXTERN_C LONG __stdcall
- #define INTAPI_(type) EXTERN_C type __stdcall
-
- BOOL KeybdGetDeviceInfo( INT iIndex, LPVOID lpOutput );
- BOOL KeybdInitStates( KEY_STATE KeyState, void *pKeybdDriverState );
-
- UINT32 KeybdVKeyToUnicode(
- UINT32 VKey,
- KEY_STATE_FLAGS KeyEventFlags,
- KEY_STATE KeyState,
- void *KeybdDriverState,
- UINT32 cBufferSize,
- UINT32 *pcCharacters,
- KEY_STATE_FLAGS *pShiftStateBuffer,
- UINT32 *pCharacterBuffer
- );
-
-
-
- #define MAX_HKL_PRELOAD_COUNT 15
-
-
- #define WH_JOURNALRECORD 0
- #define WH_JOURNALPLAYBACK 1
- #define WH_KEYBOARD_LL 20
-
-
-
-
-
- #define HC_ACTION 0
- #define HC_GETNEXT 1
- #define HC_SKIP 2
- #define HC_NOREMOVE 3
- #define HC_NOREM HC_NOREMOVE
- #define HC_SYSMODALON 4
- #define HC_SYSMODALOFF 5
-
- typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);
-
-
-
-
- typedef struct tagEVENTMSG {
- UINT message;
- UINT paramL;
- UINT paramH;
- DWORD time;
- HWND hwnd;
- } EVENTMSG, *PEVENTMSGMSG, NEAR *NPEVENTMSGMSG, FAR *LPEVENTMSGMSG;
-
- typedef struct tagEVENTMSG *PEVENTMSG, NEAR *NPEVENTMSG, FAR *LPEVENTMSG;
-
-
- HHOOK
- WINAPI
- QASetWindowsJournalHook(
- int nFilterType,
- HOOKPROC pfnFilterProc,
- EVENTMSG *pfnEventMsg
- );
-
-
- BOOL
- WINAPI
- QAUnhookWindowsJournalHook(
- int nFilterType
- );
-
-
- BOOL
- WINAPI
- GetMessageWNoWait(
- PMSG pMsg,
- HWND hWnd,
- UINT wMsgFilterMin,
- UINT wMsgFilterMax
- );
-
- BOOL
- WINAPI
- TouchCalibrate(
- void
- );
-
- int
- WINAPI
- DisableCaretSystemWide(
- void
- );
-
-
- int
- WINAPI
- EnableCaretSystemWide(
- void
- );
-
-
- BOOL
- WINAPI
- EnableHardwareKeyboard(
- BOOL fEnable
- );
-
- BOOL RegisterSIPanel (HWND hwndSIPanel);
-
-
- void WINAPI SetAssociatedMenu (
- HWND hwnd,
- HMENU hmenu
- );
-
- HMENU WINAPI GetAssociatedMenu (
- HWND hwnd
- );
-
-
- BOOL
- WINAPI
- UnregisterFunc1(
- UINT fsModifiers,
- UINT vk
- );
-
-
-
-
-
-
-
- typedef struct tagKBDLLHOOKSTRUCT {
- DWORD vkCode;
- DWORD scanCode;
- DWORD flags;
- DWORD time;
- DWORD dwExtraInfo;
- } KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
-
- HHOOK
- WINAPI
- SetWindowsHookExW(
- int idHook,
- HOOKPROC lpfn,
- HINSTANCE hmod,
- DWORD dwThreadId);
- #define SetWindowsHookEx SetWindowsHookExW
-
-
- BOOL
- WINAPI
- UnhookWindowsHookEx(
- HHOOK hhk);
-
- LRESULT
- WINAPI
- CallNextHookEx(
- HHOOK hhk,
- int nCode,
- WPARAM wParam,
- LPARAM lParam);
-
- typedef struct tagGetForegroundInfo
- {
- HWND hwndActive;
- HWND hwndFocus;
- HWND hwndMenu;
- HWND hwndKeyboardDest;
- DWORD fdwConversion;
- DWORD fdwSentence;
- BOOL fOpen;
- DWORD dwCompStrLen;
- HKL KeyboardLayoutHandle;
- } GET_FOREGROUND_INFO;
-
- BOOL
- WINAPI
- GetForegroundInfo(
- GET_FOREGROUND_INFO *pgfi
- );
-
- HWND GetForegroundKeyboardTarget(
- void
- );
-
- HKL
- GetForegroundKeyboardLayoutHandle(
- void
- );
-
-
- BOOL
- WINAPI
- ImmGetConversionStatusForeground(
- DWORD *pfdwConversion,
- DWORD *pfdwSentence
- );
-
- BOOL
- ShowStartupWindow(
- void
- );
-
-
-
- #ifndef WM_POWERBROADCAST
- #define WM_POWERBROADCAST 0x218
- #endif
-
- #define PBT_APMQUERYSUSPEND 0x0000
- #define PBT_APMQUERYSTANDBY 0x0001
-
- #define PBT_APMQUERYSUSPENDFAILED 0x0002
- #define PBT_APMQUERYSTANDBYFAILED 0x0003
-
- #define PBT_APMSUSPEND 0x0004
- #define PBT_APMSTANDBY 0x0005
-
- #define PBT_APMRESUMECRITICAL 0x0006
- #define PBT_APMRESUMESUSPEND 0x0007
- #define PBT_APMRESUMESTANDBY 0x0008
-
- #define PBTF_APMRESUMEFROMFAILURE 0x00000001
-
- #define PBT_APMBATTERYLOW 0x0009
- #define PBT_APMPOWERSTATUSCHANGE 0x000A
-
- #define PBT_APMOEMEVENT 0x000B
-
- #define PBT_APMUSERIDLE 0x000C
- #define PBT_APMUSERACTIVE 0x000D
-
-
-
-
-
-
-
- #define SHELLNOTIFY_WINDOWCREATED 0x0006
- #define SHELLNOTIFY_WINDOWDESTROYED 0x0007
- #define SHELLNOTIFY_WINDOWACTIVATED 0x0008
- #define SHELLNOTIFY_REDRAW 0x0009
- #define SHELLNOTIFY_LANGUAGE 0x000A
- #define SHELLNOTIFY_CAPSLOCK 0x000B
- #define SHELLNOTIFY_RESERVED0x000C 0x000C
- #define SHELLNOTIFY_RESERVED0x000D 0x000D
-
-
-
- #ifdef __cplusplus
- }
- #endif /*__cplusplus*/
-
- #endif /* _PRIV_WINUSER_ */
(jinhaijian) |