请问如何用C#实现键盘,鼠标等全局钩子?(100分)

finalcrasher 2003-08-16 09:39:39
以前用VC的时候有很多这方面的例子,现在在C#上就不知道应该如何实现了。所以请大家指教,最好给出详细的过程,谢谢先!
...全文
98 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
finalcrasher 2003-08-17
  • 打赏
  • 举报
回复
的确,我用C#遍的局部钩子运行起来不流畅不方便,而且也遍不了全局钩子。看来目前比较可行的方法就是直接调用VC编写的hook dll。这里有个很标准的键盘钩子示例:http://www.vchelp.net/vchelp/zsrc/keyboardhook.zip 大家可以试试。
最后,感谢大家的参与。
hwndhwnd 2003-08-16
  • 打赏
  • 举报
回复
全局钩子需要一个dll inject到其他进程里面。
如果用c#写的托管dll估计是不太可能inject到非托管代码的process里面的。
HOOK函数可以直接调windows API。
估计那个hook dll不太可能用托管代码实现。
如果哪位能实现,偶也认真学习。
Gao2003 2003-08-16
  • 打赏
  • 举报
回复
你可以把VC++的例子贴出来,大家帮你转为C#
xlfancy 2003-08-16
  • 打赏
  • 举报
回复
如果VC中会做的话,C#中也就会做了
henyzhang 2003-08-16
  • 打赏
  • 举报
回复
我也没有,不过帮你up一下,别怪我无聊,因为我发的贴子经常没人回,很难受的,所以帮你up一下吧。
码视野 2003-08-16
  • 打赏
  • 举报
回复
没接触过这方面的

帮你up!
_weiKun_ 2003-08-16
  • 打赏
  • 举报
回复
public class Win32Hook
{

[DllImport("kernel32")]
public static extern int GetCurrentThreadId();

[DllImport( "user32",
CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(
HookType idHook,
HOOKPROC lpfn,
int hmod,
int dwThreadId);

public enum HookType
{
WH_GETMESSAGE = 3
}

public delegate int HOOKPROC(int nCode, int wParam, int lParam);

public void SetHook()
{
SetWindowsHookEx(HookType.WH_GETMESSAGE,
new HOOKPROC(this.MyKeyboardProc),
0,
GetCurrentThreadId());
}

public int MyKeyboardProc(int nCode, int wParam, int lParam)
{
return 0;
}
}
Lorenes 2003-08-16
  • 打赏
  • 举报
回复
纯用.NET肯定实现不了的!! 只能用标准VC,调用Windows 的API.
.NET 做的GUI程序运行也巨慢,钩也白钩,越钩越慢....
TheAres 2003-08-16
  • 打赏
  • 举报
回复
全局钩子用.Net实现不了。

hellslayerbaby 2003-08-16
  • 打赏
  • 举报
回复
up
ekeen 2003-08-16
  • 打赏
  • 举报
回复
对cb写dll,c#调用
blastball 2003-08-16
  • 打赏
  • 举报
回复
hook是windows的专有技术,估计在.net中不会存在,用vc编个dll,C#调用即可
sarmoo 2003-08-16
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1376/1376342.xml?temp=.9033472

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧