bhwhui 发表于 2010-4-3 21:12:34

请教"多窗口"操作的问题,谢谢

本帖最后由 bhwhui 于 2010-4-3 21:20 编辑

举个例子可能好说一些:
例如Photoshop 中同时打开多幅图片,要对每幅图片进行某些操作。
现在的问题在于Photoshop 是主窗口(窗口名:Adobe Photoshop CS3 Extended),而每幅图都是子窗口(窗口名均为:PSViewC 3),区别仅仅是可见文本不同(例如DSC_0028.JPG,DSC_0030.JPG等等),如何激活某个图片的子窗口呢?

从 WinActivate ( "窗口标题" [, "窗口文本"] ) 等函数语法来看,是无法操作主窗口下的子窗口的!即无法嵌套。

用Controlgethandle 先遍历一次子窗口,然后再Gettext 比较可见文本?从而得到准确的句柄来操作?复杂了一些吧?对Autoit 来说不会这样运用的吧?

从论坛搜索结果来看,均是对GUI自己生成的窗口操作的,不同样。

疑惑了,请教高手,谢谢!

netegg 发表于 2010-4-3 23:37:21

_WinAPI_EnumProcessWindows不知道这个有没有帮助

bhwhui 发表于 2010-4-3 23:58:08

看错题目了吧?

_WinAPI_EnumProcessWindows:
Obtains information about the display devices in a system

怎么会呢?

afan 发表于 2010-4-4 00:02:05

2#应该可以吧,能获取到子窗体的句柄

bhwhui 发表于 2010-4-4 00:17:30

不好意思,我的3.3.3.3 版竟然没有这个函数的说明。看错了:

_WinAPI_EnumDisplayDevices
--------------------------------------------------------------------------------

Obtains information about the display devices in a system


#Include <WinAPI.au3>
_WinAPI_EnumDisplayDevices($sDevice, $iDevNum)

afan 发表于 2010-4-4 00:33:57

刚看了下,PS 里面的每个打开的文件应该只是占用一个窗口,每个文件为这个窗口的一个控件,并非多窗口~

bhwhui 发表于 2010-4-4 00:41:55

本帖最后由 bhwhui 于 2010-4-4 00:45 编辑

您说的没错,看我的标题“多窗口”是加引号的,呵呵,现在问题是有什么简便的方法可以操作每个子窗口或者说控件?例如就操作DSC0028号图片的“窗口"?谢谢,
2#的方法没试,估计和我在1#提出的解决方法一样,复杂啊!-----“用Controlgethandle 先遍历一次子窗口,然后再Gettext 比较可见文本?从而得到准确的句柄来操作?复杂了一些吧?对Autoit 来说不会这样运用的吧?”
网上有个Sanhe老师枚举所有控件id的程序,可能可以,还是那么复杂的啊,希望简单一些!
谢谢。
页: [1]
查看完整版本: 请教"多窗口"操作的问题,谢谢