找回密码
 加入
搜索
查看: 1615|回复: 5

视而不见的窗口

[复制链接]
发表于 2008-12-5 11:03:52 | 显示全部楼层 |阅读模式
折腾啊,过程暂先不表
代码也很简单,点击窗口一的菜单调出窗口二

WinActivate("窗口一") ; 激活窗口一
Send("!C") ; Alt+C展开窗口一某项菜单
Send("L") ; L选择下拉菜单的某项,弹出了窗口二
WinActivate("窗口二") ; 见鬼,窗口二没激活,当前活动窗口是运行该脚本的资源管理器

如果窗口二开着,只运行
WinActivate("窗口二") ; 没问题,窗口二激活

如果有人说,两句Send改变了什么的话,也确实如此
帮助里的WinList()函数例句
$var = WinList()
For $i = 1 to $var[0][0]
  If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    MsgBox(0, "详情", "标题=" & $var[$i][0] & @LF & "句柄=" & $var[$i][1])
  EndIf
Next
Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
  Else
    Return 0
  EndIf
EndFunc

加入第二个脚本中,可以列出窗口二
而加入第一个脚本中,见鬼,窗口二明明就在那里,上面的例句代码也找不到窗口二

难道Send会把一个窗口变成非窗口类型(win32编程里把按钮啊什么的都能当成窗口,而这里对窗口二无视了)

[ 本帖最后由 yookee 于 2008-12-5 11:05 编辑 ]
 楼主| 发表于 2008-12-5 11:12:45 | 显示全部楼层
起先我以为是SciTE编辑器对双字节的支持问题,因为窗口标题都是汉字,所以窗口标题匹配的时候是不是对不齐,但我是直接从spy里copy过来的
接着想AutoIt的问题?AutoHotKey用了一样,原本就是一家人嘛

那种情况下我连句柄都没法获得,又有什么方法能操纵窗口二呢?手动!!!

[ 本帖最后由 yookee 于 2008-12-5 11:14 编辑 ]
 楼主| 发表于 2008-12-5 11:18:57 | 显示全部楼层
这个工作软件
主要是我每改一个参数就要在窗口二上重复点近二十次鼠标看效果。非线性,二阶或三阶的参数,大家就知道我的点击量了。
发表于 2008-12-5 15:19:23 | 显示全部楼层
用opt('WinSearchChildren', 1)试试看
WinSearchChildren 允许窗口搜索程序在搜索顶层窗口的同时也搜索子窗口.
0 = 仅搜索顶层窗口(默认)
1 = 搜索顶层窗口及子窗口.
发表于 2008-12-5 18:32:51 | 显示全部楼层
WinActivate("窗口一")
Send("!C")
Send("L") 
winwait("窗口二")
WinActivate("窗口二") 
 楼主| 发表于 2008-12-5 20:39:36 | 显示全部楼层
WinWait("窗口二")

对,窗口还没来得及创建呢。
多谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-23 09:22 , Processed in 0.084606 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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