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

Trị*_*Tâm 5 c# hook winapi 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 
Run Code Online (Sandbox Code Playgroud)

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

对不起,如果您对我的英语感到不舒服!

Chr*_*ond 0

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

查看 Windows 绕道 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

希望这能为您指明正确的方向!