Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c语言中创建一个类似google音译的桌面应用程序_C#_.net_Keyboard_Sendkeys - Fatal编程技术网

C# 如何在c语言中创建一个类似google音译的桌面应用程序

C# 如何在c语言中创建一个类似google音译的桌面应用程序,c#,.net,keyboard,sendkeys,C#,.net,Keyboard,Sendkeys,只是截取键盘输入、转换并发送回的功能是必需的。例如,如果用户按a,我想发送e等 要使一个应用程序接受来自键盘的输入,请修改它并将其发送到活动窗口,可以使用诸如word、excel、记事本窗口屏幕等应用程序。 这个功能就像谷歌的windows音译应用程序。 我想用c语言写。 我认为这包括挂接键盘,并将vb中的sendkey等键发送到当前窗口。 工作就像。但是转换的逻辑是完全不同的。我不确定问题到底是什么,所以它可能会因为太模糊而关闭。然而,听起来您必须缓冲所有击键,将单词或短语异步发送到某个服务以

只是截取键盘输入、转换并发送回的功能是必需的。例如,如果用户按a,我想发送e等

要使一个应用程序接受来自键盘的输入,请修改它并将其发送到活动窗口,可以使用诸如word、excel、记事本窗口屏幕等应用程序。 这个功能就像谷歌的windows音译应用程序。 我想用c语言写。 我认为这包括挂接键盘,并将vb中的sendkey等键发送到当前窗口。
工作就像。但是转换的逻辑是完全不同的。

我不确定问题到底是什么,所以它可能会因为太模糊而关闭。然而,听起来您必须缓冲所有击键,将单词或短语异步发送到某个服务以进行音译,然后使用您提到的sendkeys之类的东西将它们推回键盘缓冲区。问题是,如果你的应用程序有焦点,我们不知道用户希望音译文本显示在哪里,如果像Word这样的应用程序有焦点,它将同时收到真实的击键和音译文本,然后将它们混在一起。仅对文本块进行音译似乎比试图干扰键盘缓冲区更好——此外,退格、撤消等几乎不可能实现。

您需要编写一个使用Windows文本服务框架或旧IME框架的dll。
此dll将加载到langauge栏中,并在您将其激活时加载;您的代码实现了TSF或IME框架所需的一组API,它将获取关键事件,然后您可以将其传递给代码,代码将对其进行翻译并将字符串传递回您。然后,您的另一个实现的API可以输入到windows应用程序的当前文本编辑器。

这正是问题所在,谷歌的人做得很好,所以我相信这是可能的,但使用c语言是否可能仍然是一个有待征服的胜利。好吧,如果你建立自己的小型文字处理器,它应该是相对简单的线在音译,如果你可以使用谷歌的现有服务:我不想构建音译软件,我只想获得截取键盘输入、转换并再次发送的功能。例如,如果用户按a,我想发送e等。这是为了简化用尼泊尔等亚洲语言输入的过程,纽瓦里。