找回密码
 加入
搜索
查看: 3351|回复: 17

GUICreate 失去激活问题。

[复制链接]
发表于 2009-7-19 12:55:12 | 显示全部楼层 |阅读模式
本帖最后由 qq4045728 于 2009-7-21 12:09 编辑
$Form1 = GUICreate("gui", 800, 600, -1, -1, $WS_POPUP,$WS_EX_TOPMOST)


不想去掉$WS_EX_TOPMOST
有没有办法让runwait 运行的程序界面在$form1 显示。
如果不行的话,那有没有办法让$form1 总是失去激活状态。也就是说$form1 不能覆盖runwai运行的程序界面,但其他窗口不能覆盖$form1
 楼主| 发表于 2009-7-19 15:41:57 | 显示全部楼层
没人来看看?
发表于 2009-7-19 16:16:10 | 显示全部楼层
有没有办法让runwait 运行的程序界面在$form1 显示

au3嵌套其他程序,这个貌似应该是无法做到的,除了IE
$form1 不能覆盖runwai运行的程序界面,但其他窗口不能覆盖$form1

WinSetOnTop可以同时指定run的程序和$form1,这两个窗口都可以同时置顶,其他窗口都会在这两者之下
但是要再 form1 不能覆盖runwai运行的程序界面,也就是说置顶的两者再指定其中任意一个置顶
au3做不到
别钻牛角尖了
给个代码参考下
WinActivate('autoit cn')
WinSetOnTop('autoit cn','',1)
WinActivate('UltraISO')
WinSetOnTop('UltraISO','',1)
 楼主| 发表于 2009-7-19 16:19:43 | 显示全部楼层
原来如此,谢谢楼上的。我现在就试试!
发表于 2009-7-19 16:27:00 | 显示全部楼层
有没有办法让runwait 运行的程序界面在$form1 显示

其实论坛有人提过相关的嵌套非自创建程序的问题
只是尚未解决
看下
http://www.autoitx.com/forum.php ... o=lastpost#lastpost
 楼主| 发表于 2009-7-19 16:51:54 | 显示全部楼层
本帖最后由 qq4045728 于 2009-7-19 17:29 编辑

WinActivate('autoit cn')
WinSetOnTop('autoit cn','',1)
还是不行。反复的测试,结果还是不行!

无法配合runwait
runwait("","",WinSetOnTop("",'',1))

-----------------
现在只要把$Form1 = GUICreate  设置为总是非激活,也就是最底层
-------------------------------
自己没有能力了,刚有位说过AU3可以实现!
发表于 2009-7-19 17:36:10 | 显示全部楼层
GUISetState(@SW_DISABLE)
是说这个吗
 楼主| 发表于 2009-7-19 19:12:08 | 显示全部楼层
不是楼上说的那个
发表于 2009-7-20 23:38:33 | 显示全部楼层
WinActivate('autoit cn')
WinSetOnTop('autoit cn','',1)
还是不行。反复的测试,结果还是不行!

无法配合runwait
runwait("","",WinSetOnTop("",'',1))

-----------------
现在只要把$Form1 = GUICreat ...
qq4045728 发表于 2009-7-19 16:51

不能runwait("","",WinSetOnTop("",'',1))这样用,语法错误
发表于 2009-7-20 23:40:12 | 显示全部楼层
还有你的问题总觉得有点不清楚

While 1
                If Not WinActive("你的gui名称") Then WinActivate("你的gui名称")
WEnd
发表于 2009-7-21 07:45:06 | 显示全部楼层
问题1我不会。
问题2是可以的,使用API SetParent就可以解决你的问题.因为没安装autoit,所以只能向你提供下思路:正如你所说,不去除$WS_EX_TOPMOST属性,然后将runwait的程序设为$form1的父窗口(使用API SetParent)即可.
发表于 2009-7-21 07:48:04 | 显示全部楼层
现在只要把$Form1 = GUICreate  设置为总是非激活,也就是最底层


_SetParent($form1, "Program Manager")
Func _SetParent($TitleP, $TitleC)
    If WinExists($TitleP) Then
        If WinExists($TitleC) Then
            $HwndP = WinGetHandle($TitleP)
            $HwndC = WinGetHandle($TitleC)
                        DllCall("user32.dll", "str", "SetParent", "HWnd", $HwndP, "HWnd", $HwndC)
            Return 1
        Else
            Return -1
        EndIf
    Else
        Return -1
    EndIf
EndFunc
发表于 2009-7-21 10:02:11 | 显示全部楼层
WinSetOnTop($form1,'',0)
runwait('test.exe')
WinSetOnTop($form1,'',1)
发表于 2009-7-21 10:23:28 | 显示全部楼层
有没有办法让runwait 运行的程序界面在$form1 显示。 ----
这个也可以用SetParent实现啊。
 楼主| 发表于 2009-7-21 12:09:24 | 显示全部楼层
非常感谢12楼的朋友。 以及其他的朋友。。问题已经解决!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-6 16:28 , Processed in 0.087658 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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