是否有API或命令行实用程序从活动窗口甚至全局返回当前选定的文本,比如linux实用程序"xsel“?
谢谢
编辑
从这一讨论中我了解到选择文本的技术太多了。所以我会回到使用剪贴板。不管怎样,谢谢。
我要把这个问题留一段时间,以防有人有奇迹。
发布于 2011-09-23 14:14:24
这是我从几个来源编译的解决方案。
(完整的代码、声明和依赖项,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发布于 2011-09-23 20:55:25
检查程序是否支持像IAccessible/IAccClientDocMgr或GetSelection/GetText这样的可访问接口。由于“美国残疾人法案”,许多软件需要实现可访问,才能卖给美国政府。您可以在窗口上调用AccessibleObjectFromWindow或AutomationElement::FromHandle。
看起来没有人记录他们可访问的对象树,如果存在API,那么API是从程序中获取信息的首选方法。例如,如果应用程序是IE,则应该使用Q249232获取IHTMLDocumnent2。当在UI间谍中检查时,IE7和IE8的可评估树有明显的变化。
对于其他程序来说,你可能运气不好。使用UISpy时,我无法在登录电子邮件编辑中找到所选内容。可接受性取决于程序员在其程序中实现可访问性的良好意愿。
https://stackoverflow.com/questions/7528341
复制相似问题