我会制作像Google工具栏翻译功能的工具,但它适用于桌面。 我想做的是 突出显示任何应用程序中的文本(word,pdf,live messenger等),并通过google translate api进行翻译,作为工具提示返回。
我搜索有关监控文本的msdn,我只发现使用复制和粘贴以及监控剪贴板来勾选事件。
那么,有什么想法吗? 谢谢你。
答案 0 :(得分:3)
起点是获取对当前前景窗口的引用。下面的代码将获得当前选定的窗口和该窗口的标题:
[ 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秒钟选择窗口。
我不确定如何在窗口中检索所选文本,但我会为您调查。
答案 1 :(得分:0)
我认为您需要首先获取程序处于活动状态时激活的任何窗口的句柄。我的猜测是你需要在这里查看InteropServices来做到这一点。
使用Windows API。
答案 2 :(得分:0)
听起来你需要让你的代码拦截任何进程的任何窗口句柄,这是有点复杂的地方,因为你必须确保你有访问另一个进程的访问权限。
说到这一点,我认为这不是一个好主意,因为你可能会因为关于winapi调用陷阱文本选择事件的问题而最终崩溃另一个进程,而不是提及你的事实必须确定该过程是否选择了任何文本。我能给出的最佳方向是......一篇关于如何在 CodeProject here上监视一个过程的文章,这可能是朝着正确方向迈出的一步,请记住该代码用于.NET 1.0框架。
希望这对你的编码有所帮助并祝你好运, 最好的祝福, 汤姆。