none
c# 如何读取其它进程中某个实例化window里面的一组元素的值 RRS feed

  • 问题

  •  

    c# 如何读取其它进程中某个实例化window里面的一组元素的值。

    比如现在我的机子上运行着qq,我想把现在一个聊天窗口的里面的数据给提出来。

    恳请赐教。

    • 已更改类型 用心 2010年6月14日 7:12
    2010年6月14日 7:11

答案

  • 没有什么直接的办法读取跨进程的应用程序数据的。除非您知道这些数据的结构和存放的位置。

    但,有一些技术,如 UIA (UI Automation),Windows Automation API,MSAA 等技术,可以自动化 UI 组件,从而通过某种查询 (QID,Automation ID 等) 找到符合条件的 UI 元素,并对它们进行操作,从而可以部分解决您的问题。UI Automation 是跨进程的,任何屏幕上的可见 UI 元素,在支持的情况下,都可以被基于 Automation 的框架访问到。这些框架包括 MAUI,UIAF,MITA 等。


    Mark Zhou
    • 已标记为答案 用心 2010年6月15日 8:14
    2010年6月14日 7:44
  • 你好!

         如果这个程序没有提供开发接口的话,实现起来比较困难,跨进程获取数据,只能通过猜测那个程序的具体实现方法来实现!就像很多外挂程序那样!


    周雪峰
    • 已标记为答案 用心 2010年6月15日 8:14
    2010年6月14日 12:32
    版主
  • 这种需求就是我所说的 UI 自动化。如果您在使用 Visual Studio 2010,请参考 Test 菜单,新建 Test,然后 Coded UI Test。这个很容易用 Coded UI 实现的。

    如果没有在用 Visual Studio 2010,请参考 MSAA 或者用 MAUI。


    Mark Zhou
    • 已标记为答案 用心 2010年6月15日 8:14
    2010年6月15日 7:15

全部回复

  • 没有什么直接的办法读取跨进程的应用程序数据的。除非您知道这些数据的结构和存放的位置。

    但,有一些技术,如 UIA (UI Automation),Windows Automation API,MSAA 等技术,可以自动化 UI 组件,从而通过某种查询 (QID,Automation ID 等) 找到符合条件的 UI 元素,并对它们进行操作,从而可以部分解决您的问题。UI Automation 是跨进程的,任何屏幕上的可见 UI 元素,在支持的情况下,都可以被基于 Automation 的框架访问到。这些框架包括 MAUI,UIAF,MITA 等。


    Mark Zhou
    • 已标记为答案 用心 2010年6月15日 8:14
    2010年6月14日 7:44
  • 你好!

         如果这个程序没有提供开发接口的话,实现起来比较困难,跨进程获取数据,只能通过猜测那个程序的具体实现方法来实现!就像很多外挂程序那样!


    周雪峰
    • 已标记为答案 用心 2010年6月15日 8:14
    2010年6月14日 12:32
    版主
  • 请让我解释下原因。

    我现在在公司维护一个系统。估计是c++做的。

    每次客服主管叫我去加一个帐号的时候。比如加帐号B,并且把权限设置成和帐户A(已有的)一样。

    帐户的权限下面有很多行 每行有对应的目标编号及对其的读或写权限。创建新帐号只有去把那些权限编号和是否读写抄下来,然后一行一行的加。

    所以我想运行一个程序,自动为他们赋值。

    或者至少能把帐号A的每行数据读出来,也方便很多。

    2010年6月15日 2:11
  • 这种需求就是我所说的 UI 自动化。如果您在使用 Visual Studio 2010,请参考 Test 菜单,新建 Test,然后 Coded UI Test。这个很容易用 Coded UI 实现的。

    如果没有在用 Visual Studio 2010,请参考 MSAA 或者用 MAUI。


    Mark Zhou
    • 已标记为答案 用心 2010年6月15日 8:14
    2010年6月15日 7:15
  • 你好!

         权限信息通畅是保存在数据库中的,你可以直接去访问相应的数据库,这样可以更简单的完成这个需求!


    周雪峰
    2010年6月15日 14:51
    版主
  • 由于产品是外包做的,数据库在其它部门的监管之下。我就是没有办法直接读取,才想的这个办法。

     

    2010年6月17日 6:16