【已解决】求助,如何使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
没看懂问题
三个窗口,还是二个窗口?
想哪个窗口跟着哪个窗口同时激活? 我是来看看的。原来楼主是MM啊
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
回复 2# seniors
就是想 form这个窗口,跟着文本窗口被激活 不知道4楼代码成功不,如果不成功那在本来的基础上增加不是激活窗口不置顶应该行了。 不知道4楼代码成功不,如果不成功那在本来的基础上增加不是激活窗口不置顶应该行了。 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 回复 1# fenhanxue
原来楼主是MM,论坛里可是稀罕的哟,呵呵~~! 回复 9# xms77
小妹初学,发现好多不会哦,难弄死拉,
幸亏有亲们的帮忙指点哈{:face (411):} 。。。。国宝。。。。路过 回复 11# sliqi
哈哈,正在慢慢学习呢~ 回复 4# 298311657
3Q~ 然后刚刚突然灵光一现,摸索出了一个很小白的方法,就是:
当 note激活时,先用winsetontop强制gui窗口ontop,然后马上又用winsetontop取消ONtop的属性,发现居然同时显隐拉
感觉好小白~ 看楼主是MM...觉得咱都来了不说两句对不起咱自己..你可以先将AU3窗口置顶,再将文本置顶,不知道要的是不是这个效果
页:
[1]
2