首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#怎么捕捉windows鼠标事件?

2012-01-06 
C#如何捕捉windows鼠标事件?????????C#如何捕捉windows鼠标事件?????????[解决办法]http://www.codeprojec

C#如何捕捉windows鼠标事件?????????
C#如何捕捉windows鼠标事件?????????

[解决办法]
http://www.codeproject.com/csharp/globalsystemhook.asp

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
static int hMouseHook = 0;
HookProc MouseHookProcedure;


[StructLayout(LayoutKind.Sequential)]
public class POINT{
public int x;
public int y;
}

[StructLayout(LayoutKind.Sequential)]
public class MouseHookStruct{
public POINT pt;
public int hWnd;
public int wHitTestCode;
public int dwExtraInfo;
}

[DllImport( "user32.dll ",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);

[DllImport( "user32.dll ",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(int idHook);

[DllImport( "user32.dll ",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);

public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);


public MouseHook()
{
Start();
}

~MouseHook()
{
Stop();
}

public void Start()
{
if(hMouseHook == 0)
{
MouseHookProcedure = new HookProc(MouseHookProc);

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

if(hMouseHook == 0 )
{
Stop();
throw new Exception( "Error ");
}
}
}

public void Stop()
{
bool flag =true;
if(hMouseHook != 0)
{
flag = UnhookWindowsHookEx(hMouseHook);
hMouseHook = 0;
}

if (!flag) throw new Exception( "Error ");
}

private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
MouseHookStruct MyMouseHookStruct= (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
// MyMouseHookStruct is result.


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

热点排行