课题C#全局鼠标键盘HookWord下载.docx

上传人:b****5 文档编号:18884673 上传时间:2023-01-02 格式:DOCX 页数:8 大小:16.78KB
下载 相关 举报
课题C#全局鼠标键盘HookWord下载.docx_第1页
第1页 / 共8页
课题C#全局鼠标键盘HookWord下载.docx_第2页
第2页 / 共8页
课题C#全局鼠标键盘HookWord下载.docx_第3页
第3页 / 共8页
课题C#全局鼠标键盘HookWord下载.docx_第4页
第4页 / 共8页
课题C#全局鼠标键盘HookWord下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

课题C#全局鼠标键盘HookWord下载.docx

《课题C#全局鼠标键盘HookWord下载.docx》由会员分享,可在线阅读,更多相关《课题C#全局鼠标键盘HookWord下载.docx(8页珍藏版)》请在冰豆网上搜索。

课题C#全局鼠标键盘HookWord下载.docx

publicclassKeyBordHook

{

privateconstintWM_KEYDOWN=0x100;

privateconstintWM_KEYUP=0x101;

privateconstintWM_SYSKEYDOWN=0x104;

privateconstintWM_SYSKEYUP=0x105;

//全局的事件 

publiceventKeyEventHandlerOnKeyDownEvent;

publiceventKeyEventHandlerOnKeyUpEvent;

publiceventKeyPressEventHandlerOnKeyPressEvent;

staticinthKeyboardHook=0;

//键盘钩子句柄 

//鼠标常量 

publicconstintWH_KEYBOARD_LL=13;

//keyboard 

hook 

constant 

HookProcKeyboardHookProcedure;

//声明键盘钩子事件类型. 

//声明键盘钩子的封送结构类型 

[StructLayout(LayoutKind.Sequential)]

publicclassKeyboardHookStruct

publicintvkCode;

//表示一个在1到254间的虚似键盘码 

publicintscanCode;

//表示硬件扫描码 

publicintflags;

publicinttime;

publicintdwExtraInfo;

}

//装置钩子的函数 

[DllImport("

user32.dll"

CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]

publicstaticexternintSetWindowsHookEx(intidHook,HookProclpfn,IntPtrhInstance,intthreadId);

//卸下钩子的函数 

publicstaticexternboolUnhookWindowsHookEx(intidHook);

//下一个钩挂的函数 

publicstaticexternintCallNextHookEx(intidHook,intnCode,Int32wParam,IntPtrlParam);

user32"

)]

publicstaticexternintToAscii(intuVirtKey,intuScanCode,byte[]lpbKeyState,byte[]lpwTransKey,intfuState);

publicstaticexternintGetKeyboardState(byte[]pbKeyState);

publicdelegateintHookProc(intnCode,Int32wParam,IntPtrlParam);

墨认的构造函数构造当前类的实例并自动的运行起来. 

publicKeyBordHook()

Start();

//析构函数. 

~KeyBordHook()

Stop();

publicvoidStart()

//安装键盘钩子 

if(hKeyboardHook==0)

KeyboardHookProcedure=newHookProc(KeyboardHookProc);

hKeyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().ManifestModule),0);

thrownewException("

SetWindowsHookEx 

ist 

failed."

);

publicvoidStop()

boolretKeyboard=true;

if(hKeyboardHook!

=0)

retKeyboard=UnhookWindowsHookEx(hKeyboardHook);

hKeyboardHook=0;

//如果卸下钩子失败 

if(!

(retKeyboard))thrownewException("

UnhookWindowsHookEx 

privateintKeyboardHookProc(intnCode,Int32wParam,IntPtrlParam)

if((nCode>

=0)&

&

(OnKeyDownEvent!

=null||OnKeyUpEvent!

=null||OnKeyPressEvent!

=null))

KeyboardHookStructMyKeyboardHookStruct=(KeyboardHookStruct)Marshal.PtrToStructure(lParam,typeof(KeyboardHookStruct));

//引发OnKeyDownEvent 

if(OnKeyDownEvent!

=null&

(wParam==WM_KEYDOWN||wParam==WM_SYSKEYDOWN))

KeyskeyData=(Keys)MyKeyboardHookStruct.vkCode;

KeyEventArgse=newKeyEventArgs(keyData);

OnKeyDownEvent(this,e);

//引发OnKeyPressEvent 

if(OnKeyPressEvent!

wParam==WM_KEYDOWN)

byte[]keyState=newbyte[256];

GetKeyboardState(keyState);

byte[]inBuffer=newbyte[2];

if(ToAscii(MyKeyboardHookStruct.vkCode,

MyKeyboardHookStruct.scanCode,

keyState,

inBuffer,

MyKeyboardHookStruct.flags)==1)

KeyPressEventArgse=newKeyPressEventArgs((char)inBuffer[0]);

OnKeyPressEvent(this,e);

//引发OnKeyUpEvent 

if(OnKeyUpEvent!

(wParam==WM_KEYUP||wParam==WM_SYSKEYUP))

OnKeyUpEvent(this,e);

returnCallNextHookEx(hKeyboardHook,nCode,wParam,lParam);

这个类可以让你得到一个在运行中程序的所有鼠标事件 

并且引发一个带MouseEventArgs参数的.NET鼠标事件以便你很容易使用这些信息 

publicclassMouseHook

privateconstintWM_MOUSEMOVE=0x200;

privateconstintWM_LBUTTONDOWN=0x201;

privateconstintWM_RBUTTONDOWN=0x204;

privateconstintWM_MBUTTONDOWN=0x207;

privateconstintWM_LBUTTONUP=0x202;

privateconstintWM_RBUTTONUP=0x205;

privateconstintWM_MBUTTONUP=0x208;

privateconstintWM_LBUTTONDBLCLK=0x203;

privateconstintWM_RBUTTONDBLCLK=0x206;

privateconstintWM_MBUTTONDBLCLK=0x209;

publiceventMouseEventHandlerOnMouseActivity;

staticinthMouseHook=0;

//鼠标钩子句柄 

publicconstintWH_MOUSE_LL=14;

//mouse 

HookProcMouseHookProcedure;

//声明鼠标钩子事件类型. 

//声明一个Point的封送类型 

publicclassPOINT

publicintx;

publicinty;

//声明鼠标钩子的封送结构类型 

publicclassMouseHookStruct

publicPOINTpt;

publicinthWnd;

publicintwHitTestCode;

墨认的构造函数构造当前类的实例. 

publicMouseHook()

//Start();

~MouseHook()

//安装鼠标钩子 

if(hMouseHook==0)

//生成一个HookProc的实例. 

MouseHookProcedure=newHookProc(MouseHookProc);

hMouseHook=SetWindowsHookEx(WH_MOUSE_LL,MouseHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);

//如果装置失败停止钩子 

SetWindowsHookExfailed."

boolretMouse=true;

if(hMouseHook!

retMouse=UnhookWindowsHookEx(hMouseHook);

hMouseHook=0;

(retMouse))thrownewException("

privateintMouseHookProc(intnCode,Int32wParam,IntPtrlParam)

//如果正常运行并且用户要监听鼠标的消息 

(OnMouseActivity!

MouseButtonsbutton=MouseButtons.None;

intclickCount=0;

switch(wParam)

caseWM_LBUTTONDOWN:

button=MouseButtons.Left;

clickCount=1;

break;

caseWM_LBUTTONUP:

caseWM_LBUTTONDBLCLK:

clickCount=2;

caseWM_RBUTTONDOWN:

button=MouseButtons.Right;

caseWM_RBUTTONUP:

caseWM_RBUTTONDBLCLK:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1