我正在开发一个项目,当用户选择一些文本时,需要从其他应用程序中获取所选文本。
我使用globalmousekeyhook来监控用户点击应用程序的时间,我对此没有任何问题。
我的问题是获取所选文本,因为我知道有两种方法可以从其他应用程序中获取所选文本:
1 - 发送复制命令(like this):
这种方式适用于剪贴板,并导致一些应用程序的一些问题,如Adobe阅读器(problem),IDM(clipboard links)和其他也适用于剪贴板的应用程序。
2 - 使用UI自动化:
我已经尝试过看到这种方式不能用于get selected text from ANY window (using UI Automation)
我还编辑了this代码,但是它仍然是不工作并减慢我的电脑速度
Process p = Process.GetCurrentProcess();
AutomationElement ae = AutomationElement.FromHandle(p.MainWindowHandle);
AutomationElement npEdit = ae.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.ClassNameProperty, "Edit"));
TextPattern tp = npEdit.GetCurrentPattern(TextPattern.Pattern) as TextPattern;
TextPatternRange[] trs;
if (tp.SupportedTextSelection == SupportedTextSelection.None)
{
return;
}
else
{
trs = tp.GetSelection();
label1.Text = trs[0].GetText(-1);
}
是否有另一种方法可以从其他应用程序中获取所选文本?
或者第二种方式不能用于执行工作?
感谢您的帮助...
答案 0 :(得分:0)
方法可能是使用Spy++
。获取句柄,提取并解析所需的数据。