⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wincekbhook.cpp

📁 ppc上截取屏幕的软件
💻 CPP
字号:
#include "stdafx.h"
#include "winceKBhook.h"

//globals
HINSTANCE  g_hHookApiDLL	= NULL;			//handle to coredll.dll, where all the hook related APIs are present
HHOOK g_hInstalledLLKBDhook = NULL;			//g_hInstalledLLKBDhook represents handle to the installed KB hook

/** 
*	Function Name:ActivateKBHook
*	
*	Function Desc:Initializes the proc. adress of various hook related APIs.
*				  Loads the keyboard hook.
*
*	Parameters:
*				 HINSTANCE hInstance : handle to the application to be hooked
*				 HOOKPROC LLKeyboardHookCallbackFunction : procedure where the control will come to after any KB event.
*	Returns:	
*				 true if we get all the proc addresses of hook related APIs and load the hook succesfully
*				 false if any of the above fails
*
*	Author:		 Prathamesh Kulkarni
**/
WINCEKBHOOK_API BOOL ActivateKBHook(HINSTANCE hInstance, HOOKPROC LLKeyboardHookCallbackFunction)
{
	//we need to manually load these standard Win32 API calls
	//MSDN states that these aren't supported in WinCE
	SetWindowsHookEx		= NULL;
	CallNextHookEx			= NULL;
	UnhookWindowsHookEx		= NULL;

	//now load the coredll.dll
	g_hHookApiDLL = LoadLibrary(_T("coredll.dll"));
	if(g_hHookApiDLL == NULL) 
	{
		//something is awfully wrong
		//the dll has to be present
		return false;
	}
	else
	{
		//load the SetWindowsHookEx API call
		//the SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. 
		//You would install a hook procedure to monitor the system for certain types of events.
		//here we use use the hook to monitor kyeboard events
		SetWindowsHookEx = (_SetWindowsHookExW)GetProcAddress(g_hHookApiDLL, _T("SetWindowsHookExW"));
		if(SetWindowsHookEx == NULL)
		{
			//this means that MS has really stopped supporting this API in WinCE
			return false;
		}
		else
		{
			//install the KB hook
			//the hande needs to be saved for default processing of the events and to uninstall the hook, once we are done with it
			g_hInstalledLLKBDhook = SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyboardHookCallbackFunction, hInstance, 0);
			if(g_hInstalledLLKBDhook == NULL)
			{
				return false;
			}
		}

		//load CallNextHookEx() API call
		//the CallNextHookEx function passes the hook information to the next hook procedure in the current hook chain. 
		//we use this call for default processing of events.
		CallNextHookEx = (_CallNextHookEx)GetProcAddress(g_hHookApiDLL, _T("CallNextHookEx"));
		if(CallNextHookEx == NULL)
		{
			return false;
		}

		//load UnhookWindowsHookEx() API
		//the UnhookWindowsHookEx function removes a hook procedure installed in a hook chain by the SetWindowsHookEx function.
		//we use this call to unistall the hook.
		UnhookWindowsHookEx = (_UnhookWindowsHookEx)GetProcAddress(g_hHookApiDLL, _T("UnhookWindowsHookEx"));
		if(UnhookWindowsHookEx == NULL) 
		{
			return false;
		}
	}

	//all the APIs are loaded and the application is hooked
	return true;
}

/** 
*	Function Name:DeactivateKBHook
*	
*	Function Desc:Uninstall the KB hook
*
*	Parameters:
*				 none
*	Returns:	
*				 true if we exit gracefully
*
*	Author:		 Prathamesh Kulkarni
**/
WINCEKBHOOK_API BOOL DeactivateKBHook()
{
	//unload the hook
	if(g_hInstalledLLKBDhook != NULL)
	{
		UnhookWindowsHookEx(g_hInstalledLLKBDhook);
		g_hInstalledLLKBDhook = NULL;
	}

	//unload the coredll.dll
	if(g_hHookApiDLL != NULL)
	{
		FreeLibrary(g_hHookApiDLL);
		g_hHookApiDLL = NULL;
	}
	
	//we have terminated gracefully
	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -