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

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

?? hook.cpp

?? 支持PCB設計鼠標操作,可支持protel,dxp,powerpcb,orcad.zip
?? CPP
字號:
// Hook.cpp : Defines the initialization routines for the DLL.
//

#include "stdafx.h"
#include "Hook.h"
#include "winuser.h"
#include <tlhelp32.h>
#define  DllExport _declspec(dllexport)    

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#pragma data_seg(".SHARDAT")
static HHOOK hkb = NULL;
#pragma data_seg()
HINSTANCE hins;
static	POINT	CurPosPre={0,0};
static	BOOL	rbtnDown = FALSE;
static	BOOL	rbtnMove = FALSE;
static	BOOL	mbtnDown = FALSE;
static	BOOL	mbtnMove = FALSE;


//
//	Note!
//
//		If this DLL is dynamically linked against the MFC
//		DLLs, any functions exported from this DLL which
//		call into MFC must have the AFX_MANAGE_STATE macro
//		added at the very beginning of the function.
//
//		For example:
//
//		extern "C" BOOL PASCAL EXPORT ExportedFunction()
//		{
//			AFX_MANAGE_STATE(AfxGetStaticModuleState());
//			// normal function body here
//		}
//
//		It is very important that this macro appear in each
//		function, prior to any calls into MFC.  This means that
//		it must appear as the first statement within the 
//		function, even before any object variable declarations
//		as their constructors may generate calls into the MFC
//		DLL.
//
//		Please see MFC Technical Notes 33 and 58 for additional
//		details.
//

/////////////////////////////////////////////////////////////////////////////
// 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;

BOOL CheckProcess(char	*szProcessNameCurrent)
{
	DWORD	pid;
	HANDLE	hProcess;
	char	szProcessName[256];

	HWND hWnd = GetForegroundWindow();

	GetWindowThreadProcessId(hWnd, &pid);
	hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
	if (NULL != hProcess )
	{
		HMODULE hMod;
		DWORD cbNeeded;
		typedef DWORD (CALLBACK * GetModuleBaseName)(
							HANDLE hProcess,    // handle to the process
							HMODULE hModule,    // handle to module to find filename for
							LPTSTR lpFilename,  // pointer to buffer to receive module path
							DWORD nSize         // size of buffer, in characters
							);
		typedef BOOL (CALLBACK *EnumProcessModules)(
							HANDLE hProcess,      // handle to the process
							HMODULE * lphModule,  // array to receive the module handles
							DWORD cb,             // size of the array
							LPDWORD lpcbNeeded    // receives the number of bytes returned
							);//定義回調函數的地址 

		HINSTANCE hPsDll = LoadLibrary("PSAPI.DLL");
		GetModuleBaseName pGetModuleBaseName =
				(GetModuleBaseName)GetProcAddress(hPsDll, "GetModuleBaseNameA");
		EnumProcessModules pEnumProcessModules =
				(EnumProcessModules)GetProcAddress(hPsDll, "EnumProcessModules");
		if ( pEnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )
		{
			if(pGetModuleBaseName( hProcess, hMod, szProcessName, 
							   sizeof(szProcessName)/sizeof(TCHAR)))
			{
				_strlwr(szProcessName);
				if(strstr(szProcessName, szProcessNameCurrent))
				{
					return TRUE;
				}
			}
		}
	}
	return FALSE;
}

LRESULT DllExport   CALLBACK LowLevelMouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{
	CString	str;

	if(nCode == HC_ACTION)
	{
		PMSLLHOOKSTRUCT pMSLLHook = (PMSLLHOOKSTRUCT)lParam;
		if(wParam == WM_MOUSEMOVE)
		{
			if(!CheckProcess("powerpcb"))
			{
				return CallNextHookEx(hkb, nCode, wParam, lParam );
			}
			if(rbtnDown)
			{
				POINT	pt;
				HWND hWnd;
				GetCursorPos(&pt);
				hWnd = WindowFromPoint(pt);
				if(abs(pMSLLHook->pt.x - CurPosPre.x)>32)
				{

					PostMessage(hWnd, WM_KEYDOWN, VK_SHIFT, 0);
					PostMessage(hWnd, 
								WM_MOUSEWHEEL,
								((pMSLLHook->pt.x - CurPosPre.x)<<16|MK_SHIFT),
								((pMSLLHook->pt.y << 16) + pMSLLHook->pt.x));
					PostMessage(hWnd, WM_KEYUP, VK_SHIFT, 0);
					CurPosPre.x = pMSLLHook->pt.x;
					rbtnMove = TRUE;
				}
				if(abs(pMSLLHook->pt.y - CurPosPre.y)>32)
				{
					PostMessage(hWnd, WM_KEYDOWN, VK_MENU, 0);
					PostMessage(hWnd, 
								WM_MOUSEWHEEL,
								((pMSLLHook->pt.y - CurPosPre.y)<<16),
								((pMSLLHook->pt.y << 16) + pMSLLHook->pt.x));
					PostMessage(hWnd, WM_KEYUP, VK_MENU, 0);
					CurPosPre.y = pMSLLHook->pt.y;
					rbtnMove = TRUE;
				}

				return CallNextHookEx(hkb, nCode, wParam, lParam );
			}
			else if(mbtnDown)
			{
				mbtnMove = TRUE;
			}
				
			return CallNextHookEx(hkb, nCode, wParam, lParam );
		}
		{
			HWND hWnd = GetForegroundWindow();
			if(wParam == WM_MOUSEWHEEL)
			{
				TRACE("WHELL Action !\n");
				str.Format("MouseData is 0x%x", (short)HIWORD(pMSLLHook->mouseData));
				TRACE(str);
				if((!CheckProcess("client99se"))
					&& (!CheckProcess("dxp"))
					&& (!CheckProcess("powerpcb"))
					&& (!CheckProcess("capture")))
				{
					return CallNextHookEx(hkb, nCode, wParam, lParam );
				}
				if(CheckProcess("capture"))
				{
					if((short)HIWORD(pMSLLHook->mouseData) > 0)
					{
						PostMessage(hWnd, WM_KEYDOWN, 'I', 0);
						PostMessage(hWnd, WM_KEYUP, 'I', 0);
						return TRUE;
					}
					else
					{
						PostMessage(hWnd, WM_KEYDOWN, 'O', 0);
						PostMessage(hWnd, WM_KEYUP, 'O', 0);
						return TRUE;
					}
				}
				else
				{
					if((short)HIWORD(pMSLLHook->mouseData) > 0)
					{
						PostMessage(hWnd, WM_KEYDOWN, 0x21, 0);
					}
					else
					{
						PostMessage(hWnd, WM_KEYDOWN, 0x22, 0);
					}
				}
			}
			else if(wParam == WM_MBUTTONDOWN)
			{
				if(CheckProcess("powerpcb"))
				{
					mbtnMove = FALSE;
					mbtnDown = TRUE;
				}
				if((!CheckProcess("client99se")) && (!CheckProcess("dxp")))
				{
					return CallNextHookEx(hkb, nCode, wParam, lParam );
				}
				PostMessage(hWnd, WM_KEYDOWN, 106, 0);
				PostMessage(hWnd, WM_KEYUP, 106, 0);
				PostMessage(hWnd, WM_KEYDOWN, VK_END, 0);
			}
			else if(wParam == WM_MBUTTONUP)
			{
				if(CheckProcess("powerpcb"))
				{
					mbtnDown = FALSE;
					if(mbtnMove)
					{
						return CallNextHookEx(hkb, nCode, wParam, lParam );
					}
					PostMessage(hWnd, WM_KEYDOWN, VK_F4, 0);
					PostMessage(hWnd, WM_KEYUP, VK_F4, 0);
				}
			}
			else if(wParam == WM_RBUTTONDOWN)
			{
				if(CheckProcess("powerpcb"))
				{
					rbtnDown = TRUE;
					CurPosPre = pMSLLHook->pt;
					return TRUE;
				}
				if((!CheckProcess("client99se")) && (!CheckProcess("dxp")))
				{
					return CallNextHookEx(hkb, nCode, wParam, lParam );
				}
				if(GetAsyncKeyState(VK_LBUTTON) & 0x8000)
				{
					PostMessage(hWnd, WM_KEYDOWN, ' ', 0);
					return TRUE;
				}
			}
			else if(wParam == WM_RBUTTONUP)
			{
				rbtnDown = FALSE;
				if(CheckProcess("powerpcb"))
				{
					if(rbtnMove)
					{
						rbtnMove = FALSE;
						return CallNextHookEx(hkb, nCode, wParam, lParam );
					}

					POINT	p;
					GetCursorPos(&p);
					hWnd = WindowFromPoint(p);

					ScreenToClient(hWnd, &p);
					lParam = MAKELPARAM(p.x, p.y);
					PostMessage(hWnd, WM_RBUTTONDOWN, MK_LBUTTON, lParam);
					return CallNextHookEx(hkb, nCode, wParam, lParam );
				}
				if((!CheckProcess("client99se")) && (!CheckProcess("dxp")))
				{
					return CallNextHookEx(hkb, nCode, wParam, lParam );
				}
				if(GetAsyncKeyState(VK_LBUTTON))
				{
//					PostMessage(hWnd, WM_KEYDOWN, ' ', 0);
					return TRUE;
				}
			}
		}
	}

	return CallNextHookEx(hkb, nCode, wParam, lParam );	
}


BOOL DllExport  installhook()
{
	hkb = SetWindowsHookEx(14,(HOOKPROC)LowLevelMouseProc,hins,0);
	return TRUE;
}

BOOL DllExport  UnHook()
{   	
	BOOL unhooked = UnhookWindowsHookEx(hkb);
	return unhooked;
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色倩网站大全免费| 国产精品久久久久桃色tv| 欧美午夜影院一区| 91麻豆国产香蕉久久精品| 在线不卡免费欧美| 91.麻豆视频| 欧美精品第1页| 欧美精品成人一区二区三区四区| 欧美丝袜丝交足nylons| 91黄色免费看| 欧美午夜精品久久久久久孕妇| 色综合天天综合在线视频| 91免费版在线| 欧美性猛交xxxxxxxx| 欧美视频自拍偷拍| 在线播放日韩导航| 日韩视频在线一区二区| 欧美成人女星排名| 久久久天堂av| 国产精品美日韩| 17c精品麻豆一区二区免费| 日韩美女视频一区二区| 亚洲视频一区二区在线| 国产三级欧美三级日产三级99| 精品国产乱码久久久久久浪潮| 欧美日韩国产123区| 欧美日韩一区在线观看| 欧美日韩高清一区| 日韩免费观看2025年上映的电影 | 国产视频在线观看一区二区三区 | 国产欧美日产一区| 亚洲三级电影全部在线观看高清| 亚洲亚洲精品在线观看| 美女视频第一区二区三区免费观看网站 | 中文字幕一区二区三区不卡| 亚洲美女一区二区三区| 日韩av不卡一区二区| 欧美日韩精品一区二区| 欧美成人伊人久久综合网| 中文字幕第一区二区| 一区二区三区色| 日韩高清在线观看| 麻豆91小视频| 99精品国产91久久久久久| 91福利社在线观看| 欧美一区二区视频网站| 久久精子c满五个校花| 国产精品第一页第二页第三页| 亚洲免费资源在线播放| 亚洲chinese男男1069| 免费成人你懂的| 成人国产精品免费观看动漫 | 欧美综合一区二区| 欧美一三区三区四区免费在线看| 精品粉嫩aⅴ一区二区三区四区| 国产亚洲一区二区三区四区| 亚洲欧洲日韩av| 日韩影院免费视频| 国产精品一二二区| 欧美亚洲综合网| 欧美电影免费提供在线观看| 久久久久久9999| 久久亚洲精精品中文字幕早川悠里 | 日日夜夜免费精品| 国产成人免费9x9x人网站视频| 91香蕉国产在线观看软件| 在线不卡中文字幕| 中文字幕精品三区| 午夜精品爽啪视频| 高清在线成人网| 91精品国产色综合久久久蜜香臀| 日韩电影免费在线观看网站| 国产米奇在线777精品观看| 成人av片在线观看| 日本韩国欧美在线| 日本一区二区动态图| 亚洲 欧美综合在线网络| 国产成人精品免费看| 欧美色综合影院| 欧美激情一区二区在线| 日韩精品国产精品| aa级大片欧美| www欧美成人18+| 亚洲va国产va欧美va观看| 粉嫩欧美一区二区三区高清影视| 欧美一区永久视频免费观看| 日韩伦理免费电影| 黄色小说综合网站| 欧美日韩中文另类| 国产精品久久久久久久久免费相片 | 午夜欧美大尺度福利影院在线看| 国产精品一区二区在线播放| 欧美日韩在线三区| 中文字幕日韩欧美一区二区三区| 久热成人在线视频| 欧美日韩精品一区二区天天拍小说| 国产精品丝袜一区| 极品少妇xxxx偷拍精品少妇| 欧美系列一区二区| 亚洲丝袜精品丝袜在线| 国产成人亚洲综合a∨婷婷| 日韩欧美国产成人一区二区| 亚洲观看高清完整版在线观看| 久久亚洲私人国产精品va媚药| 综合久久给合久久狠狠狠97色| 激情文学综合丁香| 日韩午夜电影在线观看| 婷婷综合在线观看| 91官网在线观看| 亚洲欧美激情在线| 成人av免费在线观看| 欧美精彩视频一区二区三区| 激情小说亚洲一区| 精品免费99久久| 日本欧美在线观看| 91成人在线精品| 亚洲天堂2014| 92国产精品观看| 国产精品久久久久久亚洲毛片| 国产成人精品影院| 久久综合九色综合97婷婷女人| 九色综合国产一区二区三区| 日韩欧美激情一区| 麻豆成人在线观看| 欧美日韩美少妇| 亚洲色图.com| 欧美在线999| 亚洲午夜影视影院在线观看| 欧美体内she精视频| 亚洲综合一区二区三区| 欧美在线你懂的| 婷婷丁香久久五月婷婷| 欧美剧在线免费观看网站| 夜夜精品浪潮av一区二区三区| 欧美精品欧美精品系列| 日韩av电影免费观看高清完整版 | 在线亚洲高清视频| 亚洲电影一级黄| 日韩精品在线一区二区| 国产麻豆9l精品三级站| 国产精品麻豆网站| 色偷偷88欧美精品久久久| 亚洲国产日韩a在线播放| 7777女厕盗摄久久久| 激情都市一区二区| 国产精品久久久久一区二区三区共| 91一区二区三区在线播放| 天堂成人免费av电影一区| 欧美岛国在线观看| 风间由美一区二区av101| 亚洲嫩草精品久久| 日韩一区二区免费视频| 国产乱码精品一区二区三| 国产精品国产精品国产专区不蜜 | 国产一区在线不卡| 亚洲免费观看高清| 91精品国产一区二区三区香蕉| 久久国产精品72免费观看| 中文字幕久久午夜不卡| 欧美性视频一区二区三区| 免费成人小视频| 亚洲三级在线观看| 欧美日本韩国一区| 国产精品888| 亚洲国产精品久久人人爱| 精品国产sm最大网站免费看| 波多野结衣精品在线| 麻豆91精品视频| 亚洲天堂久久久久久久| 图片区小说区国产精品视频| 精品久久人人做人人爱| 91原创在线视频| 久久99精品视频| 亚洲男人都懂的| 欧美电视剧在线观看完整版| 99久久免费视频.com| 全国精品久久少妇| 亚洲精品v日韩精品| 精品国产伦一区二区三区观看方式 | 国产精品主播直播| 亚洲一区二区欧美日韩| 久久久精品国产免费观看同学| 日本韩国精品在线| 国内久久婷婷综合| 亚洲bt欧美bt精品| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩卡一卡二| 成人aa视频在线观看| 另类的小说在线视频另类成人小视频在线| 亚洲欧洲成人精品av97| 精品第一国产综合精品aⅴ| 欧美中文字幕一区二区三区亚洲| 国产精品中文有码| 国产一区二区精品久久99| 亚洲777理论| 亚洲乱码国产乱码精品精小说 | 欧美成人精品二区三区99精品| 色婷婷久久久亚洲一区二区三区 | 偷拍自拍另类欧美| 综合久久久久久|