yookee 发表于 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
If $var[$i] <> "" AND IsVisible($var[$i]) Then
    MsgBox(0, "详情", "标题=" & $var[$i] & @LF & "句柄=" & $var[$i])
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 编辑 ]

yookee 发表于 2008-12-5 11:12:45

起先我以为是SciTE编辑器对双字节的支持问题,因为窗口标题都是汉字,所以窗口标题匹配的时候是不是对不齐,但我是直接从spy里copy过来的
接着想AutoIt的问题?AutoHotKey用了一样,原本就是一家人嘛

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

[ 本帖最后由 yookee 于 2008-12-5 11:14 编辑 ]

yookee 发表于 2008-12-5 11:18:57

这个工作软件
主要是我每改一个参数就要在窗口二上重复点近二十次鼠标看效果。非线性,二阶或三阶的参数,大家就知道我的点击量了。

liongodmien 发表于 2008-12-5 15:19:23

用opt('WinSearchChildren', 1)试试看
WinSearchChildren 允许窗口搜索程序在搜索顶层窗口的同时也搜索子窗口.
0 = 仅搜索顶层窗口(默认)
1 = 搜索顶层窗口及子窗口.

xsw123 发表于 2008-12-5 18:32:51

WinActivate("窗口一")
Send("!C")
Send("L")
winwait("窗口二")
WinActivate("窗口二")

yookee 发表于 2008-12-5 20:39:36

WinWait("窗口二")

对,窗口还没来得及创建呢。
多谢
页: [1]
查看完整版本: 视而不见的窗口