aardio官方社区

 找回密码
 注册会员

!connect_header_login!

只需一步,快速开始

搜索
查看: 6898|回复: 2

为什么waitactive找到的句柄和根据process ID找的句柄不同?

[复制链接]

2

主题

3

帖子

17

积分

新手入门

Rank: 1

积分
17
发表于 2011-8-18 16:22:15 | 显示全部楼层 |阅读模式
再做一个测试,很头痛,比如,我用watiactive查找标题名,得到了句柄,process id

然后我在用process来找这个程序,我找到了,而且pid也和waitactive找到的pid一样,

但是,我用winex.find(,,stock_PID)想去找他句柄,可是这个得出的句柄为什么和waitactive 得到的句柄不一样呢?

测试代码如下
/** run the program **/
process.execute("C:\gfzq\xiadan.exe");
// find the windows
stockApp_hwnd,stockApp_number,tid,pid = winex.waitActive( "用户登录");

io.open();
io.print("stcokAPP hwnd:"+stockApp_hwnd);
for hwnd,title,theadId,processId in winex.each(,, stockApp_hwnd,) {        
        io.print(hwnd+" , "+title+" , "+theadId+" , "+processId);
}
win.setForeground(stockApp_hwnd);

// loop all the program and find the pid

for processEntry in process.each( ".*.exe" ) {          
        //io.print(processEntry.th32ProcessID+ ","+processEntry.szExeFile);
        if (processEntry.szExeFile=="xiadan.exe" ){
                stock_PID = processEntry.th32ProcessID;
        }
}
io.print("This is PID:"+stock_PID);


// find the hwnd
stockApp_hwnd,stockAPP_tid,stockApp_pid = winex.find(,,stock_PID);

io.print("founded per PID :"+stockApp_hwnd+","+stockAPP_tid+","+stockApp_pid);
回复

使用道具 举报

2

主题

3

帖子

17

积分

新手入门

Rank: 1

积分
17
 楼主| 发表于 2011-8-18 16:29:36 | 显示全部楼层

看了看别人的帖子,一个进程是可以对应多个句柄的,看来根据进程来,是找不到对应的句柄的

看了看别人的帖子,一个进程是可以对应多个句柄的,看来根据进程来,是找不到对应的句柄的
回复

使用道具 举报

43

主题

679

帖子

3805

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3805
发表于 2011-8-18 17:00:11 | 显示全部楼层

一个进程里可能有多个窗体。 winex.waitActive()得到的一定是激活的窗体句柄。 而 winex.find() 就不一定是激活的窗体了,你可

一个进程里可能有多个窗体。

winex.waitActive()得到的一定是激活的窗体句柄。
而 winex.find() 就不一定是激活的窗体了,你可以指定更多的查询条件,例如窗体类名这些。

打开“aardio工具->探测器->winspy”看一下窗体的特征。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2021-9-25 02:45 , Processed in 0.062040 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表