我会制作像Google工具栏翻译功能的工具,但它适用于桌面。 我想做的是 突出显示任何应用程序中的文本(word,pdf,live messenger等),并通过google translate api进行翻译,作为工具提示返回。

我搜索有关监控文本的msdn,我只发现使用复制和粘贴以及监控剪贴板来勾选事件。

那么,有什么想法吗? 谢谢你。

有帮助吗?

解决方案

起点是获取对当前前景窗口的引用。下面的代码将获得当前选定的窗口和该窗口的标题:

[ DllImport("user32.dll") ]

static extern int GetForegroundWindow();

[ DllImport("user32.dll") ]
static extern int GetWindowText(int hWnd, StringBuilder text, int count); 

private void GetActiveWindow()
{

const int nChars = 256;
int handle = 0;
StringBuilder Buff = new StringBuilder(nChars);

   handle = GetForegroundWindow();

   if ( GetWindowText(handle, Buff, nChars) > 0 )
   {
   this.captionWindowLabel.Text = Buff.ToString();
   this.IDWindowLabel.Text = handle.ToString();
   }

}

您可以在计时器中运行此代码:即为用户提供10秒钟选择窗口。

我不确定如何在窗口中检索所选文本,但我会为您调查。

其他提示

我认为您需要首先获取程序处于活动状态时激活的任何窗口的句柄。我的猜测是你需要在这里查看InteropServices来做到这一点。

使用Windows API。

听起来你需要让你的代码拦截任何进程的任何窗口句柄,这是有点复杂的地方,因为你必须确保你有访问另一个进程的访问权限。

说到这一点,我认为这不是一个好主意,因为你可能会因为关于winapi调用陷阱文本选择事件的问题而最终崩溃另一个进程,而不是提及你的事实必须确定该过程是否选择了任何文本。我能给出的最佳方向是......一篇关于如何监视 CodeProject 这里,这可以是朝着正确方向迈出的一步,请记住所使用的代码是针对.NET 1.0框架的。

希望这对你的编码有所帮助并祝你好运, 最好的祝福, 汤姆。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top