亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hook.cpp

?? c++時尚編程百例__1-20
?? CPP
字號:
// Hook.cpp : Defines the initialization routines for the DLL.
#include "stdafx.h"
#include "hook.h"
#include <windowsx.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define MAX_KEY 100
#define CTRLBIT 0x04
#define ALTBIT  0x02
#define SHIFTBIT 0x01 
/////////////////////////////////////////////////////////////////
#pragma data_seg("shareddata")
HHOOK hHook							=NULL;
UINT nHookCount						=0;
static UCHAR HotKey[MAX_KEY]		= {0};		//hotkey
static UCHAR HotKeyMask[MAX_KEY]	= {0};		//flag for hotkey, value is VK_CONTRL or VK_NEMU or VK_SHIFT
static HWND hCallWnd[MAX_KEY]		= {0};		//window associated with hotkey
static int KeyCount					=0;
static UCHAR MaskBits				=0;		   //00000 Ctrl Alt Shift
#pragma data_seg()
////////////////////////////////////////////////////////////////
HINSTANCE hins;
void VerifyWindow();
/////////////////////////////////////////////////////////////////////////////
// CHookApp
BEGIN_MESSAGE_MAP(CHookApp, CWinApp)
	//{{AFX_MSG_MAP(CHookApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHookApp construction

CHookApp::CHookApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CHookApp object

CHookApp theApp;
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{	
	BOOL bProcessed=FALSE;
	if(HC_ACTION==nCode)
	{
		if((lParam&0xc0000000)==0xc0000000){// Key up
			switch(wParam)
			{
			case VK_MENU:
				MaskBits&=~ALTBIT;
				break;
			case VK_CONTROL:
				MaskBits&=~CTRLBIT;
				break;
			case VK_SHIFT:
				MaskBits&=~SHIFTBIT;
				break;
			default:	//judge the key and send message
				break;
			}
			for(int index=0;index<MAX_KEY;index++){
				if(hCallWnd[index]==NULL)
					continue;
				if(IsWindow(hCallWnd[index])&&(HotKey[index]==wParam)&&(HotKeyMask[index]==MaskBits)){
						SendMessage(hCallWnd[index],WM_HOTKEY,wParam,WM_KEYUP);
						bProcessed=TRUE;
				}
			}
		}
		else if((lParam&0xc000ffff)==1){	//Key down
			switch(wParam)
			{
			case VK_MENU:
				MaskBits|=ALTBIT;
				break;
			case VK_CONTROL:
				MaskBits|=CTRLBIT;
				break;
			case VK_SHIFT:
				MaskBits|=SHIFTBIT;
				break;
			default:	//judge the key and send message
				break;
			}
			for(int index=0;index<MAX_KEY;index++){
				if(hCallWnd[index]==NULL)
					continue;
				if(IsWindow(hCallWnd[index])&&(HotKey[index]==wParam)&&(HotKeyMask[index]==MaskBits)){
						SendMessage(hCallWnd[index],WM_HOTKEY,wParam,WM_KEYDOWN);
						bProcessed=TRUE;
				}
			}
		}
		if(!bProcessed){
			for(int index=0;index<MAX_KEY;index++){
				if(hCallWnd[index]==NULL)
					continue;
				if(IsWindow(hCallWnd[index])&&(HotKey[index]==0)&&(HotKeyMask[index]==0))
					SendMessage(hCallWnd[index],WM_HOTKEY,WM_HOTKEY,lParam);
			}
		}
	}
	return CallNextHookEx( hHook, nCode, wParam, lParam );	
}

BOOL InitHotkey()
{
	if(hHook!=NULL){
		nHookCount++;
		return TRUE;
	}
	else
		hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
	if(hHook!=NULL)
		nHookCount++;
	return (hHook!=NULL);
}
BOOL UnInit()
{   
	if(nHookCount>1){
		nHookCount--;
		return TRUE;
	}
	BOOL unhooked = UnhookWindowsHookEx(hHook);
	if(unhooked==TRUE){
		nHookCount=0;
		hHook=NULL;
	}
	return unhooked;
} 

BOOL __declspec(dllexport) __stdcall AddHotkey(HWND hWnd,UCHAR cKey,UCHAR cMask)
{
	BOOL bAdded=FALSE;
	for(int index=0;index<MAX_KEY;index++){
		if(hCallWnd[index]==0){
			hCallWnd[index]=hWnd;
			HotKey[index]=cKey;
			HotKeyMask[index]=cMask;
			bAdded=TRUE;
			KeyCount++;
			break;
		}
	}
	return bAdded;
}

BOOL __declspec(dllexport) __stdcall DeleteHotkey(HWND hWnd,UCHAR cKey,UCHAR cMask)
{
	BOOL bRemoved=FALSE;
	for(int index=0;index<MAX_KEY;index++){
		if(hCallWnd[index]==hWnd){
			if(HotKey[index]==cKey&&HotKeyMask[index]==cMask){
				hCallWnd[index]=NULL;
				HotKey[index]=0;
				HotKeyMask[index]=0;
				bRemoved=TRUE;
				KeyCount--;
				break;
			}
		}
	}
	return bRemoved;
}

void VerifyWindow()
{
	for(int i=0;i<MAX_KEY;i++){
		if(hCallWnd[i]!=NULL){
			if(!IsWindow(hCallWnd[i])){
				hCallWnd[i]=NULL;
				HotKey[i]=0;
				HotKeyMask[i]=0;
				KeyCount--;
			}
		}
	}
}

BOOL CHookApp::InitInstance() 
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	hins=AfxGetInstanceHandle();
	InitHotkey();
	return CWinApp::InitInstance();
}

int CHookApp::ExitInstance() 
{
	VerifyWindow();
	UnInit();
	return CWinApp::ExitInstance();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美综合在线| 韩国成人福利片在线播放| 日韩黄色免费电影| 国产高清一区日本| 91精品国产色综合久久不卡蜜臀| 欧美激情在线一区二区三区| 日韩av二区在线播放| 91视视频在线观看入口直接观看www | 日韩亚洲欧美在线| 亚洲欧洲一区二区在线播放| 免费成人性网站| 欧美视频在线观看一区| 一区在线播放视频| 国产精品中文字幕日韩精品| 在线91免费看| 一区二区三区中文在线| 成人app网站| 欧美国产日韩精品免费观看| 日韩va欧美va亚洲va久久| 在线免费观看一区| 一区视频在线播放| 成人激情免费网站| 国产亚洲精品福利| 国产美女在线精品| 中文无字幕一区二区三区| 日日欢夜夜爽一区| 欧美精品粉嫩高潮一区二区| 亚洲国产你懂的| 91黄视频在线| 亚洲国产精品久久人人爱蜜臀 | 日本不卡一区二区三区| 在线不卡中文字幕| 日韩在线一二三区| 欧美一区二区三区公司| 秋霞影院一区二区| 日韩视频一区二区三区在线播放 | 国产一区二区三区免费播放| 日韩三级av在线播放| 免费在线一区观看| 2017欧美狠狠色| 国产福利一区二区三区视频在线 | 午夜亚洲福利老司机| 欧美午夜理伦三级在线观看| 亚洲一区二区欧美激情| 欧美精品亚洲一区二区在线播放| 天天综合色天天综合色h| 91精品国模一区二区三区| 免费欧美在线视频| 2欧美一区二区三区在线观看视频| 蜜臀久久99精品久久久久宅男 | 欧美日韩国产另类不卡| 亚洲成人tv网| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美va天堂va视频va在线| 精品一区二区国语对白| 久久久青草青青国产亚洲免观| 国产成人自拍网| 悠悠色在线精品| 欧美一区二区三区四区在线观看| 国产在线日韩欧美| 中文字幕一区三区| 欧美理论电影在线| 99久久99久久免费精品蜜臀| 亚洲精选一二三| 91精品国产综合久久久久| 国产麻豆成人精品| 一区二区免费看| 日韩视频免费直播| 91免费看`日韩一区二区| 人人狠狠综合久久亚洲| 国产精品国产三级国产三级人妇| 欧美色窝79yyyycom| 国产传媒久久文化传媒| 亚洲一区视频在线观看视频| 欧美国产日韩一二三区| 91精品国产综合久久福利| av在线不卡免费看| 麻豆精品视频在线观看免费| **欧美大码日韩| 日韩精品一区在线观看| 一本色道久久综合精品竹菊| 久草中文综合在线| 亚洲国产美国国产综合一区二区| 久久久久久久精| 5566中文字幕一区二区电影| 不卡av免费在线观看| 久久爱www久久做| 亚洲国产精品久久久久婷婷884| 国产视频一区二区在线| 日韩欧美国产一二三区| 欧美性一区二区| 91在线免费视频观看| 国产成人精品1024| 九色综合狠狠综合久久| 亚洲动漫第一页| 亚洲乱码国产乱码精品精小说| 久久精品欧美一区二区三区不卡| 日韩一级黄色大片| 欧美另类videos死尸| 在线影视一区二区三区| 北条麻妃国产九九精品视频| 国产福利91精品| 久久se精品一区二区| 日本一道高清亚洲日美韩| 午夜精品视频一区| 亚洲曰韩产成在线| 亚洲一区二区三区三| 亚洲乱码中文字幕综合| 亚洲免费在线电影| 亚洲日本在线视频观看| 国产精品久久久久婷婷| 国产精品久久午夜| 18成人在线观看| 亚洲欧美日韩在线| 一区二区三区四区乱视频| 亚洲综合无码一区二区| 亚洲香肠在线观看| 日韩在线播放一区二区| 视频在线观看国产精品| 日本午夜精品一区二区三区电影| 日av在线不卡| 激情综合色播激情啊| 国产精品一区二区在线看| 国产精品99久久久| 99麻豆久久久国产精品免费| 日韩免费观看2025年上映的电影| 日韩一区二区在线播放| 日韩精品一区二区三区在线观看| 日韩精品在线看片z| 国产色产综合色产在线视频| 综合亚洲深深色噜噜狠狠网站| 亚洲免费伊人电影| 午夜私人影院久久久久| 蜜桃视频在线观看一区| 国产成人亚洲综合a∨猫咪| 不卡的av在线播放| 欧美日韩免费不卡视频一区二区三区| 欧美精品tushy高清| 久久综合视频网| 1000部国产精品成人观看| 亚洲国产毛片aaaaa无费看| 蜜臀精品一区二区三区在线观看| 国产呦萝稀缺另类资源| 91在线精品秘密一区二区| 欧美日韩精品欧美日韩精品一| 日韩免费一区二区| 国产精品久久久久久久岛一牛影视 | 亚洲六月丁香色婷婷综合久久| 日韩码欧中文字| 免费人成网站在线观看欧美高清| 国产成人在线网站| 欧美三级中文字| 久久精品视频在线看| 一区二区三区免费观看| 激情av综合网| 精品视频在线免费看| 久久久久97国产精华液好用吗| 亚洲婷婷综合久久一本伊一区| 亚洲第一福利一区| 成人免费视频网站在线观看| 欧美喷潮久久久xxxxx| 中文字幕av不卡| 蜜臀av国产精品久久久久| 色老综合老女人久久久| 久久午夜色播影院免费高清| 亚洲第一激情av| 91视频com| 午夜不卡av在线| 成人综合在线观看| 日韩午夜av一区| 亚洲综合999| 成人亚洲精品久久久久软件| 欧美sm极限捆绑bd| 偷拍日韩校园综合在线| 99久久99精品久久久久久| 26uuu国产一区二区三区| 性做久久久久久免费观看 | 欧洲国产伦久久久久久久| 中文一区一区三区高中清不卡| 麻豆成人免费电影| 欧美日韩高清在线播放| 亚洲三级在线观看| av不卡在线观看| 中文字幕av一区二区三区免费看| 久久国产精品99久久人人澡| 884aa四虎影成人精品一区| 亚洲精品写真福利| 97久久精品人人澡人人爽| 久久精品亚洲精品国产欧美| 久久99国产乱子伦精品免费| 制服.丝袜.亚洲.另类.中文| 亚洲国产视频直播| 欧美四级电影在线观看| 亚洲国产精品天堂| 欧洲中文字幕精品| 亚洲影视在线观看| 精品视频一区 二区 三区| 亚洲电影一区二区三区| 欧美视频日韩视频| 婷婷六月综合网|