C# Hook键盘鼠标连按连点器Word格式.docx

上传人:b****4 文档编号:7190503 上传时间:2023-05-08 格式:DOCX 页数:41 大小:119.38KB
下载 相关 举报
C# Hook键盘鼠标连按连点器Word格式.docx_第1页
第1页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第2页
第2页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第3页
第3页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第4页
第4页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第5页
第5页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第6页
第6页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第7页
第7页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第8页
第8页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第9页
第9页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第10页
第10页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第11页
第11页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第12页
第12页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第13页
第13页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第14页
第14页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第15页
第15页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第16页
第16页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第17页
第17页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第18页
第18页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第19页
第19页 / 共41页
C# Hook键盘鼠标连按连点器Word格式.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C# Hook键盘鼠标连按连点器Word格式.docx

《C# Hook键盘鼠标连按连点器Word格式.docx》由会员分享,可在线阅读,更多相关《C# Hook键盘鼠标连按连点器Word格式.docx(41页珍藏版)》请在冰点文库上搜索。

C# Hook键盘鼠标连按连点器Word格式.docx

publiceventMouseEventHandlerOnMouseActivity;

publiceventKeyEventHandlerKeyDown;

publiceventKeyPressEventHandlerKeyPress;

publiceventKeyEventHandlerKeyUp;

publicdelegateintHookProc(intnCode,Int32wParam,IntPtrlParam);

staticinthMouseHook=0;

staticinthKeyboardHook=0;

publicconstintWH_MOUSE_LL=14;

publicconstintWH_KEYBOARD_LL=13;

HookProcMouseHookProcedure;

HookProcKeyboardHookProcedure;

[StructLayout(LayoutKind.Sequential)]

publicclassPOINT

{

publicintx;

publicinty;

}

publicclassMouseHookStruct

publicPOINTpt;

publicinthwnd;

publicintwHitTestCode;

publicintdwExtraInfo;

publicclassKeyboardHookStruct

publicintvkCode;

publicintscanCode;

publicintflags;

publicinttime;

[DllImport("

user32.dll"

CharSet=CharSet.Auto,

CallingConvention=CallingConvention.StdCall)]

publicstaticexternintSetWindowsHookEx(intidHook,HookProclpfn,

IntPtrhInstance,intthreadId);

publicstaticexternboolUnhookWindowsHookEx(intidHook);

publicstaticexternintCallNextHookEx(intidHook,intnCode,

Int32wParam,IntPtrlParam);

publicvoidStart()

if(hMouseHook==0)

{

MouseHookProcedure=newHookProc(MouseHookProc);

hMouseHook=SetWindowsHookEx(WH_MOUSE_LL,

MouseHookProcedure,

Marshal.GetHINSTANCE(

Assembly.GetExecutingAssembly().GetModules()[0]),

0);

if(hMouseHook==0){

Stop();

thrownewException("

SetWindowsHookExfailed."

);

}

}

if(hKeyboardHook==0)

KeyboardHookProcedure=newHookProc(KeyboardHookProc);

hKeyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,

KeyboardHookProcedure,

Assembly.GetExecutingAssembly().GetModules()[0]),

if(hKeyboardHook==0){

SetWindowsHookExistfailed."

publicvoidStop()

boolretMouse=true;

boolretKeyboard=true;

if(hMouseHook!

=0)

retMouse=UnhookWindowsHookEx(hMouseHook);

hMouseHook=0;

}

if(hKeyboardHook!

retKeyboard=UnhookWindowsHookEx(hKeyboardHook);

hKeyboardHook=0;

if(!

(retMouse&

&

retKeyboard))thrownewException("

UnhookWindowsHookExfailed."

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;

privateintMouseHookProc(intnCode,Int32wParam,IntPtrlParam)

if((nCode>

=0)&

(OnMouseActivity!

=null)){

MouseButtonsbutton=MouseButtons.None;

switch(wParam)

{

caseWM_LBUTTONDOWN:

button=MouseButtons.Left;

break;

caseWM_RBUTTONDOWN:

button=MouseButtons.Right;

intclickCount=0;

if(button!

=MouseButtons.None)

if(wParam==WM_LBUTTONDBLCLK||wParam==WM_RBUTTONDBLCLK)clickCount=2;

elseclickCount=1;

MouseHookStructMyMouseHookStruct=(MouseHookStruct)Marshal.PtrToStructure(lParam,typeof(MouseHookStruct));

MouseEventArgse=newMouseEventArgs(

button,

clickCount,

MyMouseHookStruct.pt.x,

MyMouseHookStruct.pt.y,

0);

OnMouseActivity(this,e);

returnCallNextHookEx(hMouseHook,nCode,wParam,lParam);

user32"

)]

publicstaticexternintToAscii(intuVirtKey,

intuScanCode,

byte[]lpbKeyState,

byte[]lpwTransKey,

intfuState);

publicstaticexternintGetKeyboardState(byte[]pbKeyState);

privateconstintWM_KEYDOWN=0x100;

privateconstintWM_KEYUP=0x101;

privateconstintWM_SYSKEYDOWN=0x104;

privateconstintWM_SYSKEYUP=0x105;

privateintKeyboardHookProc(intnCode,Int32wParam,IntPtrlParam)

(KeyDown!

=null||KeyUp!

=null||KeyPress!

=null))

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

if(KeyDown!

=null&

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

KeyskeyData=(Keys)MyKeyboardHookStruct.vkCode;

KeyEventArgse=newKeyEventArgs(keyData);

KeyDown(this,e);

if(KeyPress!

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]);

KeyPress(this,e);

if(KeyUp!

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

KeyUp(this,e);

returnCallNextHookEx(hKeyboardHook,nCode,wParam,lParam);

}

Form1代码

usingSystem.Drawing;

usingSystem.Drawing.Drawing2D;

namespacePatcher_采集

{

publicpartialclassForm1:

Form

[System.Runtime.InteropServices.DllImport("

)]

privatestaticexternintmouse_event(intdwFlags,intdx,intdy,intcButtons,intdwExtraInfo);

constintMOUSEEVENTF_LEFTDOWN=0x0002;

constintMOUSEEVENTF_LEFTUP=0x0004;

///<

summary>

///安装钩子

/summary>

paramname="

idHook"

>

<

/param>

hProc"

hMod"

dwThreadId"

returns>

/returns>

[DllImport("

publicstaticexternintSetWindowsHookEx(intidHook,HookProchProc,IntPtrhMod,intdwThreadId);

///将hook信息传递到链表中下一个hook处理过程

hHook"

nCode"

wParam"

lParam"

publicstaticexternintCallNextHookEx(inthHook,intnCode,IntPtrwParam,IntPtrlParam);

///卸载钩子

publicstaticexternboolUnhookWindowsHookEx(inthHook);

///获取模块句柄

lpModuleName"

kernel32.dll"

publicstaticexternIntPtrGetModuleHandle(stringlpModuleName);

publicstructKeyInfoStruct

publicintvkCode;

//按键键码

publicintscanCode;

publicintflags;

//键盘是否按下的标志

publicinttime;

publicintdwExtraInfo;

User32.dll"

publicstaticexternvoidkeybd_event(BytebVk,BytebScan,Int32

dwFlags,Int32dwExtraInfo);

privateconstintWH_KEYBOARD_LL=13;

//钩子类型全局钩子

privateconstintWM_KEYUP=0x101;

//按键抬起

privateconstintWM_KEYDOWN=0x100;

//按键按下

privateconstintKEYEVENTF_KEYUP=2;

byteVK_Q=0;

///坐标

privatePoint[]points;

///坐标个数索引

intpointIndex=1;

intnowPointIndex=0;

///按键索引

intKeyIndex=0;

Labellb;

///输入框

TextBoxtxt;

///LinkLabel

//LinkLabellink;

///执行的动作顺序,保存的控件名称

stringdongzuo="

txtP1"

;

intdongzuoIndex=0;

publicdelegateintHookProc(intnCode,IntPtrwParam,IntPtrlParam);

boolbStopMsg=false;

inthHook=0;

GCHandlegc;

stringb="

F2"

intindex=0;

privateUserActivityHookhook;

Iconicon1=newIcon(Application.StartupPath+@"

\..\emoticon-1.ico"

Iconicon2=newIcon(Application.StartupPath+@"

\..\emoticon-2.ico"

publicintMethodHookProc(intnCode,IntPtrwParam,IntPtrlParam)

if(nCode>

KeyInfoStructinputInfo=(KeyInfoStruct)Marshal.PtrToStructure(lParam,typeof(KeyInfoStruct));

if(wParam==(IntPtr)WM_KEYDOWN)

//如果按键按下

if(((Keys)inputInfo.vkCode).ToString()==b)

if(timer1.Enabled==true)

notifyIcon1.Icon=icon1;

timer1.Enabled=false;

else

notifyIcon1.Icon=icon2;

timer1.Enabled=true;

if(bStopMsg)

return1;

returnCallNextHookEx(hHook,nCode,wParam,lParam);

//继续传递消息

publicForm1()

InitializeComponent();

boBox1.SelectedIndex=1;

//默认索引值

boBox1.DropDownStyle=ComboBoxStyle.DropDownList;

//仅在列表中选择

privatevoidForm1_Load(objectsender,EventArgse)

if(0==hHook)

HookProcKeyCallBack=newHookProc(MethodHookProc);

hHook=

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

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2