fenhanxue 发表于 2012-10-7 03:37:01

【已解决】求助,如何使AUTO与外部文本文档同时显示和同时最小化?

本帖最后由 fenhanxue 于 2012-10-8 21:28 编辑

编了个auto文件,实现了与一个已经打开的文本文档的以下互动功能:
1)最小化文本文档时,auto也一起最小化
2)回复最小化的文本文档时,auto也一起仅仅靠在文档的右边缘

但是发现我的代码还有以下问题,就是我设想的,是auto能够和文本文档同时显示和同时最小化,但是当有其他程序也运行的时候,若恢复最小化的文本文档,auto会有一部分被其他的已激活的程序遮挡住:(具体问题如截图所示)
















从晚上22点一直纠结到现在,翻阅说明书还是找不到头绪,求助大神帮忙:,万分感激拉

以下是小妹的代码:Dim $i, $b, $a
Dim $List, $ok, $positon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>

$positon = WinGetPos("新建 - 记事本", "")
If Not @error Then
      
      $Form1 = GUICreate("Form1", 362, 269, $positon + $positon + 3, $positon + 4)
      $Input1 = GUICtrlCreateInput("Input1", 8, 8, 137, 50)
      $List = GUICtrlCreateList("", 160, 0, 193, 152)
      GUICtrlSetData($List, "123")
      GUICtrlSetData($List, "345")
      GUICtrlSetData($List, "789")
      $List = GUICtrlCreateList("", 160, 160, 193, 153)
      GUICtrlSetData($List, "bhg")
      GUICtrlSetData($List, "llj")
      GUICtrlSetData($List, "87u")
      $ok = GUICtrlCreateButton("ok1", 20, 80, 30, 30)
      $ok = GUICtrlCreateButton("ok2", 20, 150, 30, 30)
      $ok = GUICtrlCreateButton("ok3", 20, 200, 30, 30)


      ;GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
      GUISetState()
EndIf
While 1
      $nMsg = GUIGetMsg()

      Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                        Exit
      EndSwitch
                $status = WinGetState("新建 - 记事本", "")
      ;MsgBox(0,0,$status)
      If BitAnd($status, 16) Then ;最小化
                        WinSetState($Form1,"",@SW_MINIMIZE)
      ElseIf BitAnd($status, 8) Then
                        $array=WinGetPos("新建 - 记事本")
                        WinMove("Form1","",$array+$array,$array)
                        WinSetOnTop("Form1","",1)
                  WinSetState($Form1,"",@SW_RESTORE)
      EndIf
WEnd
       

seniors 发表于 2012-10-7 08:47:07

没看懂问题
三个窗口,还是二个窗口?
想哪个窗口跟着哪个窗口同时激活?

xx44t10 发表于 2012-10-7 09:42:35

我是来看看的。原来楼主是MM啊

298311657 发表于 2012-10-7 10:50:27


Dim $i, $b, $a
Dim $List, $ok, $positon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>

Run("notepad.exe")
WinWait("")

$hNotehwnd = WinGetHandle("")
$positon = WinGetPos("", "")

If Not @error Then      
        $Form1 = GUICreate("Form1", 362, 269, $positon, 0, -1, $WS_EX_MDICHILD, $hNotehwnd)
        $Input1 = GUICtrlCreateInput("Input1", 8, 8, 137, 50)
        $List = GUICtrlCreateList("", 160, 0, 193, 152)
        GUICtrlSetData($List, "123")
        GUICtrlSetData($List, "345")
        GUICtrlSetData($List, "789")
        $List = GUICtrlCreateList("", 160, 160, 193, 153)
        GUICtrlSetData($List, "bhg")
        GUICtrlSetData($List, "llj")
        GUICtrlSetData($List, "87u")
        $ok = GUICtrlCreateButton("ok1", 20, 80, 30, 30)
        $ok = GUICtrlCreateButton("ok2", 20, 150, 30, 30)
        $ok = GUICtrlCreateButton("ok3", 20, 200, 30, 30)
        ;GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
        GUISetState()
        WinMove($Form1,"",$positon+$positon+5,$positon+5)
EndIf

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        WinClose($hNotehwnd)
                        Exit
        EndSwitch
        $status = WinGetState($hNotehwnd, "")
        If @error Then Exit
;~         ;MsgBox(0,0,$status)
        If BitAnd($status, 8) Then
                $array=WinGetPos($hNotehwnd)
                WinMove($Form1,"",$array+$array+5,$array+5)
        EndIf
WEnd
      

fenhanxue 发表于 2012-10-7 12:07:20

回复 2# seniors


就是想 form这个窗口,跟着文本窗口被激活

seniors 发表于 2012-10-7 15:47:18

不知道4楼代码成功不,如果不成功那在本来的基础上增加不是激活窗口不置顶应该行了。

seniors 发表于 2012-10-7 15:47:22

不知道4楼代码成功不,如果不成功那在本来的基础上增加不是激活窗口不置顶应该行了。

xms77 发表于 2012-10-7 21:55:50

Dim $i, $b, $a
Dim $List, $ok, $positon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>

$positon = WinGetPos("", "")
If Not @error Then
      
      $Form1 = GUICreate("Form1", 362, 269, $positon + $positon + 3, $positon + 4)
      $Input1 = GUICtrlCreateInput("Input1", 8, 8, 137, 50)
      $List = GUICtrlCreateList("", 160, 0, 193, 152)
      GUICtrlSetData($List, "123")
      GUICtrlSetData($List, "345")
      GUICtrlSetData($List, "789")
      $List = GUICtrlCreateList("", 160, 160, 193, 153)
      GUICtrlSetData($List, "bhg")
      GUICtrlSetData($List, "llj")
      GUICtrlSetData($List, "87u")
      $ok = GUICtrlCreateButton("ok1", 20, 80, 30, 30)
      $ok = GUICtrlCreateButton("ok2", 20, 150, 30, 30)
      $ok = GUICtrlCreateButton("ok3", 20, 200, 30, 30)


      ;GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
      GUISetState()
EndIf
While 1
      $nMsg = GUIGetMsg()

      Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                        Exit
      EndSwitch
                $status = WinGetState("", "")
      ;MsgBox(0,0,$status)
      If BitAnd($status, 16) Then ;最小化
                        WinSetState($Form1,"",@SW_MINIMIZE)
      ElseIf BitAnd($status, 8) Then
                        $array=WinGetPos("")
                        WinMove("Form1","",$array+$array,$array)
                        ;WinSetOnTop("Form1","",1)
                  WinSetState($Form1,"",@SW_RESTORE)
                EndIf
                If WinActive("") Then
                        WinSetOnTop("Form1","",1)
                Else
                        WinSetOnTop("Form1","",0)
                EndIf
               
                               
WEnd
      回复 1# fenhanxue

xms77 发表于 2012-10-7 21:57:54

回复 1# fenhanxue
原来楼主是MM,论坛里可是稀罕的哟,呵呵~~!

fenhanxue 发表于 2012-10-7 23:49:58

回复 9# xms77


    小妹初学,发现好多不会哦,难弄死拉,
    幸亏有亲们的帮忙指点哈{:face (411):}

xyhqqaa 发表于 2012-10-8 19:32:23

。。。。国宝。。。。路过

fenhanxue 发表于 2012-10-8 21:26:55

回复 11# sliqi


    哈哈,正在慢慢学习呢~

fenhanxue 发表于 2012-10-8 21:27:44

回复 4# 298311657


    3Q~

fenhanxue 发表于 2012-10-8 21:28:04

然后刚刚突然灵光一现,摸索出了一个很小白的方法,就是:

当 note激活时,先用winsetontop强制gui窗口ontop,然后马上又用winsetontop取消ONtop的属性,发现居然同时显隐拉

感觉好小白~

fhqbbfcu2050 发表于 2012-10-11 14:37:24

看楼主是MM...觉得咱都来了不说两句对不起咱自己..你可以先将AU3窗口置顶,再将文本置顶,不知道要的是不是这个效果
页: [1] 2
查看完整版本: 【已解决】求助,如何使AUTO与外部文本文档同时显示和同时最小化?