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

5
我用C# .NET编写了一个全局键盘钩子程序,类似于键盘记录器,它将结果写入文件。但我使用了另一个程序,在同一台计算机上支持输入越南语-它也使用全局钩子来固定键盘为越南字符-这影响到了我的程序!例如:当我输入以下内容:“xin chao2, to6i la2 mot65 nguoi72 Viet65 Nam”时,如果没有使用我的程序,它会在我每输入一个字符后再次修复为:“xin chào, tôi là một người Việt Nam”。 但是当我使用我的全局钩子,我会在文件中收到以下结果:
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 - FrostyFire
好吧,您正在查看另一個程序生成按键以在字母上放置重音。 您的键盘记录器也会记录这些。 当然很难修复。 - Hans Passant
1个回答

0

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

可以参考Windows Detours http://research.microsoft.com/en-us/projects/detours/

如果你在使用.NET,可以使用Easy Hook http://easyhook.codeplex.com/

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

希望这些能指引你朝着正确的方向前进!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接