Windows Mobile 触摸屏(Touch Panel)消息截获(pwinuser.h)
,在pwinuser.h的头文件里,有hook的API。
一、实现代码
#ifndef _PRIV_WINUSER_
#define _PRIV_WINUSER_
#ifdef __cplusplus
extern "C" {
#endif
#include <keybd.h>
// Non-Standard CE internal messages.
#define WM_QM_ACTIVATE 0x60
#define WM_HOOK_DO_CALLBACK 0x61
#define WM_SYSCOPYDATA 0x62
// wparam values for WM_SYSCOPYDATA
#define WMSCD_CHAR_RANKED_ALTS 0x01
#define WMSCD_DIALOGSCROLLBAR 0x02
/*
* Extended Window Styles
*/
#if(WINVER >= 0x0400)
#endif /* WINVER >= 0x0400 */
// Marker for end of accelerator tables.
#define FLASTKEY 0x80
// SetWindowPos internal flags
#define SWP_SYSTEMCAPTURE 0x80000000
#define SWP_FINDNEWFOREGROUND 0x40000000
#define SWP_MAXMIN 0x20000000
// Internal values for hwnd for use in broadcasting messages
// Must be odd numbered.
#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
/*
* Predefined Clipboard Formats
*/
#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);
/*
* ImmAssociateValueWithGwesMessageQueue flags
*
* These is not hard & fast rule for the #s given below - just
* that they are ordered in pairs of get/set operations
*/
#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);
/* Values for NotifyWinUserSystem */
#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 );
//#define ExitWindows(dwReserved, Code) ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF)
//WINUSERAPI BOOL WINAPI ExitWindowsEx( UINT uFlags,DWORD dwReserved);
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 );
// A system class built in to GWE for use by everyone
#define CS_SYSTEMCLASS 0x80000000
/* flags for DrawFrameControl */
//#define DFC_CAPTION 1
#define DFC_MENU 2
//#define DFC_SCROLL 3
//#define DFC_BUTTON 4
#define DFC_SPINNER 6
//#define DFCS_CAPTIONCLOSE 0x0000
//#define DFCS_CAPTIONMIN 0x0001
//#define DFCS_CAPTIONMAX 0x0002
//#define DFCS_CAPTIONRESTORE 0x0003
//#define DFCS_CAPTIONHELP 0x0004
//#define DFCS_CAPTIONOKBTN 0x0080
#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_SCROLLUP 0x0000
//#define DFCS_SCROLLDOWN 0x0001
//#define DFCS_SCROLLLEFT 0x0002
//#define DFCS_SCROLLRIGHT 0x0003
//#define DFCS_SCROLLCOMBOBOX 0x0005
#define DFCS_SCROLLSIZEGRIP 0x0008
#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
//#define DFCS_BUTTONCHECK 0x0000
#define DFCS_BUTTONRADIOIMAGE 0x0001
#define DFCS_BUTTONRADIOMASK 0x0002
//#define DFCS_BUTTONRADIO 0x0004
//#define DFCS_BUTTON3STATE 0x0008
//#define DFCS_BUTTONPUSH 0x0010
#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_INACTIVE 0x0100
//#define DFCS_PUSHED 0x0200
//#define DFCS_CHECKED 0x0400
#define DFCS_ADJUSTRECT 0x2000
#define DFCS_FLAT 0x4000
#define DFCS_MONO 0x8000
#define MFT_NONOWNERSTRING 0x80000000L
//WINUSERAPI BOOL WINAPI DrawFrameControl(HDC, LPRECT, UINT, UINT);
// NC messages
#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
/* Class style for IME UI window */
#define CS_IME 0x00010000
#endif // FAREAST
#ifdef _WIN32_WCE_EMULATION
#ifdef CS_IME
#undef CS_IME
#endif
#define CS_IME 0x00010000
#endif
/* For internal APIs "exposed" to other internal pieces. */
#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
);
// Maximum # of slots available in preload reg key.
#define MAX_HKL_PRELOAD_COUNT 15
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD_LL 20
/*
* Hook Codes
*/
#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);
/*
* Message Structure used in Journaling
*/
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; // virtual key code
DWORD scanCode; // scan code DWORD flags; // flags
DWORD flags; // unused
DWORD time; // time stamp for this message
DWORD dwExtraInfo; // extra info from the driver or keybd_event
} 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
);
// This is taken directly from pbt.h. Not all values are used or supported.
#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
// @CESYSGEN IF GWES_WINMGR
// Notifications sent by GWES to the shell
// Codes used in WM_SHELLNOTIFY
#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
// @CESYSGEN ENDIF
#ifdef __cplusplus
}
#endif /*__cplusplus*/
#endif /* _PRIV_WINUSER_ */
分享到:
相关推荐
windows mobile系统钩子示范程序,使用C++编写,环境为Visual Studio 2005,希望对大家有用!
WindowsMobile5 源码WindowsMobile5 源码WindowsMobile5 源码WindowsMobile5 源码
如何搭建windows mobile应用开发的环境
Windows Mobile开发实验,wince操作系统定制。
众所周知,在windows7操作系统中已经不需要安装active sync ...清您下载windows mobile center for windows7(vista也是如此)软件,然后将手机与电脑连接即可.亲自操作,该方法适合于任何版本的windows mobile 手机系统.
Windows Mobile开发Windows Mobile开发Windows Mobile开发Windows Mobile开发
Windows Mobile for HP iPAQ 114
Windows Mobile 经典源码 学习Windows Mobile 的不二选择
windows mobile 平台下的My mobile软件。
QR条形码的开发程序,能够在windows mobile 6中实现QR条形码的开发程序,能够在windows mobile 6中实现,eMbedded Visual C++和VS两种源代码
Windows mobile 6.5常用软件
windows mobile 6.0 基于WebService方式与PC Server通讯的demo
Windows Mobile应用程序开发介绍 .Windows Mobile平台 .Windows Mobile开发环境搭建 .Windows Mobile开发技术和资源 .Demo
升级windows mobile 5.0
windows mobile直连版
WINDOWS MOBILE滑屏解锁
windows mobile驱动开发
ppc windows mobile rom
windows mobile 同步程序,本程序为windows xp 专用!
Windows mobile应用开发流程