qq4045728 发表于 2009-7-19 12:55:12

GUICreate 失去激活问题。

本帖最后由 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

qq4045728 发表于 2009-7-19 15:41:57

没人来看看?

lynfr8 发表于 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)

qq4045728 发表于 2009-7-19 16:19:43

原来如此,谢谢楼上的。我现在就试试!

lynfr8 发表于 2009-7-19 16:27:00

有没有办法让runwait 运行的程序界面在$form1 显示
其实论坛有人提过相关的嵌套非自创建程序的问题
只是尚未解决
看下
http://www.autoitx.com/forum.php?mod=redirect&tid=7046&goto=lastpost#lastpost

qq4045728 发表于 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可以实现!

seniors 发表于 2009-7-19 17:36:10

GUISetState(@SW_DISABLE)
是说这个吗

qq4045728 发表于 2009-7-19 19:12:08

不是楼上说的那个

kn007 发表于 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 http://www.autoitx.com/images/common/back.gif
不能runwait("","",WinSetOnTop("",'',1))这样用,语法错误

kn007 发表于 2009-7-20 23:40:12

还有你的问题总觉得有点不清楚

While 1
                If Not WinActive("你的gui名称") Then WinActivate("你的gui名称")
WEnd

ceoguang 发表于 2009-7-21 07:45:06

问题1我不会。
问题2是可以的,使用API SetParent就可以解决你的问题.因为没安装autoit,所以只能向你提供下思路:正如你所说,不去除$WS_EX_TOPMOST属性,然后将runwait的程序设为$form1的父窗口(使用API SetParent)即可.

ceoguang 发表于 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

liongodmien 发表于 2009-7-21 10:02:11

WinSetOnTop($form1,'',0)
runwait('test.exe')
WinSetOnTop($form1,'',1)

pusofalse 发表于 2009-7-21 10:23:28

有没有办法让runwait 运行的程序界面在$form1 显示。 ----
这个也可以用SetParent实现啊。

qq4045728 发表于 2009-7-21 12:09:24

非常感谢12楼的朋友。 以及其他的朋友。。问题已经解决!
页: [1] 2
查看完整版本: GUICreate 失去激活问题。