首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于windows等效API或命令行的xsel?

用于windows等效API或命令行的xsel?
EN

Stack Overflow用户
提问于 2011-09-23 11:34:06
回答 2查看 1.9K关注 0票数 0

是否有API或命令行实用程序从活动窗口甚至全局返回当前选定的文本,比如linux实用程序"xsel“?

  • 我不介意获得不到100%的成功。
  • 我知道每个窗口都可以有自己的文本选择,但现在可以忽略不计。
  • 目前,我唯一的解决方案/解决方法是发送键"ctrl+c“并从剪贴板中读取,但由于两个明显的原因,这是一个糟糕的解决方案。
  • 我知道在MS-Word上怎么做,但那是1%的病例。

谢谢

编辑

这一讨论中我了解到选择文本的技术太多了。所以我会回到使用剪贴板。不管怎样,谢谢。

我要把这个问题留一段时间,以防有人有奇迹。

EN

回答 2

Stack Overflow用户

发布于 2011-09-23 14:14:24

这是我从几个来源编译的解决方案。

  • 它将只在简单的文本控件上工作。对于其他类型的文本,还有其他解决方案,但为了简单起见,我将使用剪贴板。

(完整的代码、声明和依赖项,google表示"SendMessage hWndCaret")

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2011-09-23 20:55:25

检查程序是否支持像IAccessible/IAccClientDocMgrGetSelection/GetText这样的可访问接口。由于“美国残疾人法案”,许多软件需要实现可访问,才能卖给美国政府。您可以在窗口上调用AccessibleObjectFromWindow或AutomationElement::FromHandle。

看起来没有人记录他们可访问的对象树,如果存在API,那么API是从程序中获取信息的首选方法。例如,如果应用程序是IE,则应该使用Q249232获取IHTMLDocumnent2。当在UI间谍中检查时,IE7和IE8的可评估树有明显的变化。

对于其他程序来说,你可能运气不好。使用UISpy时,我无法在登录电子邮件编辑中找到所选内容。可接受性取决于程序员在其程序中实现可访问性的良好意愿。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7528341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档