Sean M Posted June 29, 2006 Share Posted June 29, 2006 I have a problem here and I hope someone can help. I have a GUI that when used will activate a program and enter then program. I am trying to make the GUI close after the other one opens. I have tryed alot of option, but to no success. When the program opens and then I try and close it by clicking the "x" the GUI just sits there and the only way of closing it is using a ctrl alt del close of the GUI. The code is as follows: expandcollapse popup; Lines 16 - 23 are setting up the GUI. $Form1 = GUICreate("XLCapital Visual SourceSafe Login", 320, 165, 192, 125) $InputUserName = GUICtrlCreateInput("",65, 27, 169, 21) $InputPassword = GUICtrlCreateInput("", 65, 80, 169, 21, $ES_PASSWORD) $BtnClose = GUICtrlCreateButton("Exit", 100,110) $BtnNext = GUICtrlCreateButton("Next",140,110) GUICtrlCreateLabel ("Please Enter your Password", 80, 59 ) GUICtrlCreateLabel ("Please Enter your Username", 80, 6) ; GUISetState makes the form show on the screen GUISetState(@SW_SHOW) ; the GUICtrlSetState function disables the $InputFolder so the user can not manually enter data in the input box. While 1 ; $msg is used to react with what actions are happening on the GUI. $msg = GuiGetMsg() Select ; Line 36 is the "X" button coding. Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $BtnNext ; The following lines are tied into the OK button. ; Lines 55 - 62 read the input boxes and then checks to see if there is a null value in them. ; Then lines 63 - 80 gives errors if there is a null value or an invalid char in the input box. $ReadUserName = GUICtrlRead($InputUserName) $NullCheckUserName = StringReplace($ReadUserName, "|", @CRLF) $ReadPassword = GUICtrlRead($InputPassword) $NullCheckPassword = Stringreplace($ReadPassword, "|",@CRLF) If $NullCheckUserName = "" Then msgbox(16,"Error","Please Enter in an UserName") Controlfocus ("","",$InputUserName) ElseIf $NullCheckPassword = "" Then msgbox(16,"Error","Please Enter in a Password") Controlfocus ("","",$InputPassword) Else Run("C:\Program Files\Microsoft Visual Studio\VSS\win32\SSEXP.EXE") WinWaitActive("Visual SourceSafe Login") ;Enter The Username in the ControlID 8003 input/txt box ControlSetText("Visual SourceSafe Login", "", 8003, $ReadUserName) ;Enter the Password in the 8006 input/txt box ControlSetText("Visual SourceSafe Login", "", 8006, $ReadPassword) ;Browse button is 8263 ControlClick("Visual SourceSafe Login", "", 8263) EndIf EndSelect WEnd Link to comment Share on other sites More sharing options...
Valuater Posted June 29, 2006 Share Posted June 29, 2006 maybe Else Run("C:\Program Files\Microsoft Visual Studio\VSS\win32\SSEXP.EXE") WinWaitActive("Visual SourceSafe Login") GUIDelete($Form1) 8) Link to comment Share on other sites More sharing options...
MHz Posted June 29, 2006 Share Posted June 29, 2006 Perhaps this may work better. Using WinWait() instead of WinWaitActive(), as Control*() functions do not need an active window. Also just hiding the Gui window to see the ControlSetText() event happen. expandcollapse popup; Lines 16 - 23 are setting up the GUI. $Form1 = GUICreate("XLCapital Visual SourceSafe Login", 320, 165, 192, 125) $InputUserName = GUICtrlCreateInput("",65, 27, 169, 21) $InputPassword = GUICtrlCreateInput("", 65, 80, 169, 21, $ES_PASSWORD) $BtnClose = GUICtrlCreateButton("Exit", 100,110) $BtnNext = GUICtrlCreateButton("Next",140,110) GUICtrlCreateLabel ("Please Enter your Password", 80, 59 ) GUICtrlCreateLabel ("Please Enter your Username", 80, 6) ; GUISetState makes the form show on the screen GUISetState(@SW_SHOW) ; the GUICtrlSetState function disables the $InputFolder so the user can not manually enter data in the input box. While 1 ; $msg is used to react with what actions are happening on the GUI. $msg = GuiGetMsg() Select ; Line 36 is the "X" button coding. Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $BtnClose; <----- Added this in Exit Case $msg = $BtnNext ; The following lines are tied into the OK button. ; Lines 55 - 62 read the input boxes and then checks to see if there is a null value in them. ; Then lines 63 - 80 gives errors if there is a null value or an invalid char in the input box. $ReadUserName = GUICtrlRead($InputUserName) $NullCheckUserName = StringReplace($ReadUserName, "|", @CRLF) $ReadPassword = GUICtrlRead($InputPassword) $NullCheckPassword = Stringreplace($ReadPassword, "|",@CRLF) If $NullCheckUserName = "" Then msgbox(16,"Error","Please Enter in an UserName") Controlfocus ("","",$InputUserName) ElseIf $NullCheckPassword = "" Then msgbox(16,"Error","Please Enter in a Password") Controlfocus ("","",$InputPassword) Else GUISetState(@SW_HIDE) Run(@ProgramFilesDir & "\Microsoft Visual Studio\VSS\win32\SSEXP.EXE") If WinWait("Visual SourceSafe Login", "", 60) Then ;Enter The Username in the ControlID 8003 input/txt box ControlSetText("Visual SourceSafe Login", "", 8003, $ReadUserName) ;Enter the Password in the 8006 input/txt box ControlSetText("Visual SourceSafe Login", "", 8006, $ReadPassword) ;Browse button is 8263 ControlClick("Visual SourceSafe Login", "", 8263) EndIf GUISetState(@SW_SHOW) EndIf EndSelect WEnd Link to comment Share on other sites More sharing options...
Sean M Posted June 29, 2006 Author Share Posted June 29, 2006 Great help once again. These forums are the best! Thanks again guys Link to comment Share on other sites More sharing options...
NELyon Posted June 29, 2006 Share Posted June 29, 2006 I had a similar question, but i figured it out myself. Instead of closing the GUI, i just set it to @SW_HIDE after i click my main button Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now