是否有API或命令行实用程序从活动窗口甚至全局返回当前选定的文本,例如linux实用程序“xsel”?
感谢
修改
从this discussion我了解到选择文本的技术太多了。所以我会回到使用剪贴板。不管怎么说,还是要谢谢你。
如果有人有奇迹,我会暂时搁置这个问题。
答案 0 :(得分:1)
这是我从几个来源编译的解决方案。
(对于完整的代码,声明和依赖关系,google为“SendMessage hWndCaret”)
If hWndCaret <> 0 Then
'first, get all text
nLength = SendMessage(hWndCaret, WM_GETTEXTLENGTH, 0&, ByVal 0&)
If nLength <> 0 Then
buff = Space$(nLength + 1)
res = SendMessage(hWndCaret, WM_GETTEXT, nLength + 1, ByVal buff)
If res <> 0 Then Txt = Left$(buff, res)
End If
' then
If nLength <> 0 Then
buff = Space$(nLength + 1)
res = SendMessage(hWndCaret, EM_GETSEL, VarPtr(StartPos), EndPos)
selection = Mid(Txt, StartPos + 1, EndPos - StartPos)
End If
End If
答案 1 :(得分:0)
检查该程序是否支持IAccessible / IAccClientDocMgr或TextPattern_GetSelection / TextRange_GetText等可访问界面。由于美国残疾人法案,许多软件需要实施可供出售给美国政府。您可以在窗口上调用AccessibleObjectFromWindow或AutomationElement :: FromHandle。
看起来没有人记录他们的可访问对象树,如果存在API,那么API是从程序获取信息的首选方式。例如。如果应用程序是IE,您应该使用Q249232来获取IHTMLDocumnent2。在UI间谍中检查时,IE7和IE8的可评估树有重大变化。
对于其他节目,你可能会运气不好。使用UISpy时,我无法在登录电子邮件编辑中找到选择。可访问性取决于程序员在程序中实现可访问性的良好意愿。