【问题标题】:Another global hook affects to my global hook另一个全局钩子影响我的全局钩子
【发布时间】:2012-11-02 12:59:14
【问题描述】:

我在 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
  • 嗯,你看到这个其他程序生成击键来将重音放在字母上。您的键盘记录器也在记录这些内容。当然不容易修复。

标签: c# winapi hook keyboard-hook


【解决方案1】:

假设我正确理解了您的问题,您正在尝试创建另一个钩子,该钩子在将字符固定为使用越南字符后也将钩子?这是一个 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2022-11-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多