在另一个程序中访问选定的文本[重复]
Posted
技术标签:
【中文标题】在另一个程序中访问选定的文本[重复]【英文标题】:Access selected text in another program [duplicate] 【发布时间】:2012-08-20 20:00:06 【问题描述】:可能重复:How can an app hook into text selection system-wide?
我将创建一个查找程序,它的运行方式可能类似于 Windows Shell 类型的应用程序。在 Outlook 中,我将选择一个 ID 号(文本),我的应用程序需要接受它作为参数来处理它。
如何在全局 (Windows) 范围内访问选定的文本?
我的解决方法可能是执行复制操作,然后读取剪贴板的内容。但如果可能的话,我想保持免费。
【问题讨论】:
How can an app hook into text selection system-wide? 的可能副本另请参阅:***.com/questions/9606041 和 ***.com/questions/7509483 “执行复制操作”没有用户启动它是一个非常非常糟糕的主意.. 怎么回事?它是文本,而不是与安全相关的密钥等。有很多应用程序可以访问其他应用程序中的数据。我想你能扩展一下吗? @ikathegreat- 在没有用户启动的情况下执行“复制”不是一个好主意的原因是用户不期望它并且不知道它正在发生。如果用户在剪贴板上存储了一些东西,那么您的应用程序启动的副本会默默地丢弃用户的数据(这绝不是一件好事)。用户希望始终完全控制剪贴板。 @bta 很公平。这我发现与 Outlook 的创建新联系人操作有冲突...有谁知道所选文本是否可以通过附加组件 (VBA) 访问? 【参考方案1】:在此线程中查看解决方案:Copy Selected Text from any window
基本上,您需要使用 PInovoke 从活动窗口中获取选定的文本。此外,您可以设置 Windows 键绑定来运行您的应用程序并触发操作。这种方法的额外好处是适用于所有应用程序,而不仅仅是 Outlook。
【讨论】:
【参考方案2】:-
你可以使用spy++在你想获取ID的控件上设置一个目标
-
使用 API 窗口
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount)
;
它允许您从控件(文本框或其他标题)中获取文本
【讨论】:
会碰巧有一个关于如何做到这一点的例子吗?我的目标应用程序是 Outlook 2010,我需要在那里获取选定的文本。以上是关于在另一个程序中访问选定的文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在单击角度7中的按钮时获取下拉列表的选定值和选定文本[重复]
在选定 Excel 列的单元格中查找并突出显示重复的单元格和文本字符串