我想监视用户在任何应用程序中所做的所有文本select。 那可能吗? 我更喜欢.net的解决scheme,但香草C + +是好的。
如果不是,我可以监视.net应用程序中的所有文本复制 *** 作(CTRL + C)吗?
类似的问题: 在C#中,有没有办法一直能够获得当前聚焦窗口的选定文本内容?
每24小时创build文件取决于计时器
空隙的.NET代码签名的应用程序不会安装/运行
如何开发windows应用程序
我怎么能告诉我的应用程序窗口是前景窗口
fileSystemWatcher类 – 简单的问题
如何让windows本机查找.NET的TreeVIEw?
如何遍历物理文件夹并在C#中读取叶文件
windows似乎失去了.NET应用程序的踪迹
无法加载.Net程序集
确定当前计算机是否支持组策略
“选择”不是一个普遍的概念,每一个控制都可以用自己的方式处理。 如果你想拦截每一个选择,你可以在windows消息上放置一个全局钩子,并拦截与“已知”编辑控件(标准编辑控件,RichEdit控件,…)有关的通知,通过筛选出那些看起来不错,并检查源窗口类(对于编辑框,选择更改是什么可能是通知某个其他控件的核战争的开始)。 你不会得到所有的选择(例如在Word中的选择不会被拦截),但是你可能会想到获得绝大多数的选择。
但是有一个很大的问题:没有窗户的控制。 正如这个术语本身所说的,无窗控制不是窗户,所以他们没有任何HWND或任何东西; 实际上,它们可以被认为是在屏幕上绘制的像素,而不需要来自应用程序的外部接口(它们通常是COM东西)。 你不能挂钩它们,你不能将它们继承,因为它们通常使用COM接口来通知它的所有者( 随机的例子 ),所以你不能继承它的所有者来获得他们的通知。 当然,可能有一些奇怪的方法来获取他们的内容,但它可能涉及每个进程的DLL注入,甚至比“正常”编辑框提出的方法一般。
由于无窗口控件相当普遍(例如,使用DirectUI的浏览器和应用程序,使用它们来避免浪费大量的HWND ,IIRC Office也使用它们,WPF应用程序使用自己的无窗口控件的味道,VB6 / Delphi应用程序可以使用它们,…),你会有很多错过的选择,所以我建议你遵循复制拦截的方式,这是更简单,更安全。
在这方面,您可以遵循@Richard的建议,并使用AddClipboardFormatListner API。 请记住,这只能从windows Vista开始才能使用,所以如果你想兼容以前的windows版本,你应该使用旧的“剪贴板查看器”API集。 一些信息在这里 。
编辑
呃,我忘记了,我正在研究主动可访问性(尽管通常没有正确实施 )可以帮助你完成这个任务,并且有这个有前景的方法 ,但是事实证明,它只适用于选定的子对象, , 一般来说,
客户注意 Active Accessibility不公开编辑和富编辑控件中的文本选择。
所以,我认为,如果即使可访问性不提供这样的信息,那么有任何其他标准化的方式来获取它是相当困难的。
在(隐藏)窗口中注册并处理WM_CliPBOARDUPDATE消息。
总结以上是内存溢出为你收集整理的在任何应用程序中监视select全部内容,希望文章能够帮你解决在任何应用程序中监视select所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)