另一个全局钩子影响我的全局钩子

时间:2012-11-14 01:51:43

标签: c# winapi hook keyboard-hook

我在C#.NET中编写了一个全局键盘钩子程序,就像一个键盘记录程序,它将结果写入文件。但是我使用了另一个程序,它在同一台计算机上支持类型越南语 - 它还使用全局钩子将设置键盘修复为越南字符 - 这会对我的程序产生影响!

示例:当我输入以下内容:“xin chao2,to6i la2 mot65 nguoi72 Viet65 Nam”没有我的程序,它会在我键入的每个字符后再次修复:xinchào,tôilàmộtngườiViệtNam。

但是当我使用我的全局钩子时,我收到文件中的结果:

xin chao2[Back]
[Back]
[Packet]
[Packet]
[Escape]
 toi6[Back]
[Back]
[Packet]
[Packet]
[Escape]
 la2[Back]
[Packet]
[Escape]
 nguoi7[Back]
[Back]
[Back]
[Packet]
[Packet]
[Packet]
[Escape]
2[Back]
[Back]
[Packet]
[Packet]
[Escape]
Viet6[Back]
[Back]
[Packet]
[Packet]
[Escape]
5[Back]
[Back]
[Packet]
[Packet]
[Escape]
 Nam 

那么,我如何修复此错误,排除程序支持类型越南语的效果而不删除或禁用它,或接受来自它的效果但结果文件看起来像没有我的程序的类型?

如果您对我的英语感到不舒服,请抱歉!

1 个答案:

答案 0 :(得分:0)

假设我正确地理解了你的问题,你试图创建另一个钩子,它们也会在修复它们以使用越南字符后挂钩它们?这是一个hacky解决方案,但您可以尝试打开越南程序,它在调试器中创建钩子,找到正在执行挂钩的函数,并挂钩该函数的返回值。

查看窗户的弯路 http://research.microsoft.com/en-us/projects/detours/

如果您正在使用.NET,那么很容易就可以了 http://easyhook.codeplex.com/

这是一个关于在C ++和绕道中创建钩子的教程 http://gamerztools.net/foros/showthread.php?933-C-Tutorial-Hooking-Functions-using-Detours

希望这应该指向正确的方向!