Показать полную графическую версию : [решено] Открыть окно, скрытое вторым .exe
morgan1991
08-06-2010, 20:20
Здравствуйте!
Возникла такая проблемка.
В одном скрипте создано gui, затем guisetstate(), затем guisetstate(@SW_HIDE, $Gui)
Нужно другим скриптом отобразить это окно - guisetstate(@SW_SHOW, $Gui).
Помогите пожалуйста.
morgan1991,
если у первого GUI есть $Title, то
WinSetState($Title, "", @SW_SHOW)
morgan1991
08-06-2010, 23:10
если у первого GUI есть $Title, то »
к сожалению $Title нет, а если сделать, то окно открывается, но неодна кнопка не работает...
А ещё было бы неплохо, не только отобразить окно а ещё и выслать ему комманду нажатия на кнопку, не используя клавиатуру и мышь...
morgan1991,
код первого скрипта приведи. там видно будет
morgan1991
09-06-2010, 00:57
#include <guiconstants.au3>
$Gui = GUICreate (http://www.autoitscript.com/autoit3/docs/functions/GUICreate.htm)("")
$Button = GUICtrlCreateButton (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateButton.htm)("button1", 10, 10)
GUISetState (http://www.autoitscript.com/autoit3/docs/functions/GUISetState.htm)(@SW_SHOW (http://www.autoitscript.com/autoit3/docs/macros.htm#@SW_SHOW), $Gui)
GUISetState (http://www.autoitscript.com/autoit3/docs/functions/GUISetState.htm)(@SW_HIDE (http://www.autoitscript.com/autoit3/docs/macros.htm#@SW_HIDE), $Gui)
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$Msg = GUIGetMsg (http://www.autoitscript.com/autoit3/docs/functions/GUIGetMsg.htm)()
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $Msg = $GUI_EVENT_CLOSE Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
morgan1991
1. зачем делать SHOW, а потом следом сразу же HIDE? если ничего не делать будет тоже самое
2. зачем нужен GUI который скрыт? ну да ладно, это не суть
Title у GUI никак не может влиять на его работоспособность. Просто дай уникальное имя окну.
к примеру, вот немного твой доработанный скрипт
#include <guiconstants.au3>
$Gui = GUICreate("My Unique title")
$Button = GUICtrlCreateButton("button1", 10, 10)
;GUISetState(@SW_SHOW, $Gui)
;GUISetState(@SW_HIDE, $Gui)
While 1
$Msg = GUIGetMsg()
If $Msg = $GUI_EVENT_CLOSE Then Exit
WEnd
запускаешь после этого второй скрипт-монитор.
$hGUI = GUICreate("Window catcher")
$hButtonCatch = GUICtrlCreateButton("Show/Hide Window", 10, 10)
GUISetState()
$sTitle = "My Unique title"
Global $flag = 1; WIndow is hide
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
ExitLoop
Case $hButtonCatch
_WinCatch()
EndSwitch
WEnd
Func _WinCatch()
Switch $flag
Case 1
WinSetState($sTitle, "", @SW_SHOW)
$flag = 0
Case 0
WinSetState($sTitle, "", @SW_HIDE)
$flag = 1
EndSwitch
EndFunc
morgan1991
09-06-2010, 19:36
К сожалению, сейчас немогу привести пример скрипта, но я с предидущим немного ошибся.
guigetmsg() там не используется, вмсто него оневент, и возможно из-за этого после отображения окна вторым скриптом, ни одна кнопка в окне не работает.
+ необходимо:
не только отобразить окно а ещё и выслать ему комманду нажатия на кнопку, не используя клавиатуру и мышь... »
просто отобразить окно недостаточно... :(
Возможно есть способ используя dll или чтото ещё, чтобы отсылать первому скрипту комманды?
morgan1991, для этого существуют команда
ControlClick()
morgan1991
09-06-2010, 20:34
morgan1991, для этого существуют команда »
не используя клавиатуру и мышь... »
morgan1991
14-06-2010, 17:37
Решил, методом TCP соединения между двумя скриптами...
morgan1991, предполагаю, что если ты приведешь свое решение тут, оно будет очень полезным не только тебе но и многим другим, с аналогичной проблемой ;)
morgan1991
17-06-2010, 08:47
Example.au3
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) TCPConnect()
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $MainSocet = TCPListen (http://www.autoitscript.com/autoit3/docs/functions/TCPListen.htm)(@IPAddress1 (http://www.autoitscript.com/autoit3/docs/macros.htm#@IPAddress1), 5438, 1)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) @error (http://www.autoitscript.com/autoit3/docs/macros.htm#@error) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(16, "", "TCPListen: " & @error (http://www.autoitscript.com/autoit3/docs/macros.htm#@error))
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) FileExists (http://www.autoitscript.com/autoit3/docs/functions/FileExists.htm)(@ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@ScriptDir) & "\_MsgFunc.exe") Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
ShellExecute (http://www.autoitscript.com/autoit3/docs/functions/ShellExecute.htm)(@ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@ScriptDir) & "\_MsgFunc.exe")
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $ConnectSocet = -1
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) $ConnectSocet < 0
$ConnectSocet = TCPAccept (http://www.autoitscript.com/autoit3/docs/functions/TCPAccept.htm)($MainSocet)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
Else (http://www.autoitscript.com/autoit3/docs/keywords.htm#Else)
ErrorInstallProg()
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $ConnectSocet
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _ShowGui()
; Тут открывается окно
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) ErrorInstallProg()
Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
TCPConnect()
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$TCPRecvData = TCPRecv (http://www.autoitscript.com/autoit3/docs/functions/TCPRecv.htm)($VK_MsgConnectedSocet, 4098)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $TCPRecvData = "ShowGUI" Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) _ShowGui()
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
_MsgFunc.au3
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _CreateConnectedSocet()
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $TempConnectSocet = -1
$TempConnectSocet = TCPConnect (http://www.autoitscript.com/autoit3/docs/functions/TCPConnect.htm)(@IPAddress1 (http://www.autoitscript.com/autoit3/docs/macros.htm#@IPAddress1), 5438)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) @error (http://www.autoitscript.com/autoit3/docs/macros.htm#@error) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $TempConnectSocet
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _SendShowGui()
TCPSend (http://www.autoitscript.com/autoit3/docs/functions/TCPSend.htm)($ConnectedSocet, "ShowGUI")
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)
_CreateConnectedSocet()
_SendShowGui()
Откомпилить _MsgFunc.au3 и запустить Example.au3
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC