grimmlock Posted December 14, 2012 Posted December 14, 2012 Heya So I have 3 questions 1) For some reason the first button runs the test script/batch just fine, however does not pop up the msgbox. However button 2 also runs the script/batch but will show either the error or the successful msgbox. What am I doing wrong? 2) Is there a way to have the 2 buttons pop up a msgbox that when the ok button is clicked it runs the script/batch file? I would like the user to be prompted for a "confirmation" msgbox before the script/batch file is run 3) Is there a way to have the output of the script show in a input box? expandcollapse popup#include <GUIConstantsEx.au3> Main() Func Main() GUICreate("Test", 200, 320) ; will create a dialog box that when displayed is centered Local $Label1 = GUICtrlCreateLabel("Copy SpringBrook Databases", 10, 10, 200) Local $Label2 = GUICtrlCreateLabel("Copy DB 4 to 5: ", 20, 43, 75) Local $Label3 = GUICtrlCreateLabel("Copy DB 5 to 6: ", 20, 73, 75) Local $Label4 = GUICtrlCreateLabel("Output: ", 20, 103, 50) local $Button_1 = GUICtrlCreateButton("Run", 125, 35, 50) local $Button_2 = GUICtrlCreateButton("Run", 125, 65, 50) local $Button_3 = GUICtrlCreateButton("Ok", 125, 285, 50) Local $Input_1 = GUICtrlCreateInput("", 10, 123, 175, 150) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $Button_1 local $var_1 = Run("\\computer.domain.local\Test\Test.bat") Case $Button_2 local $var_2 = Run("\\computer.domain.local\Test\Test2.bat") Case $Button_3 Exit If $var_1 Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf If $var_2 Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndSwitch WEnd EndFunc Thanks Grimm Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 grimmlock,See if this While..WEnd loop does what you want: While 1 Switch GUIGetMsg() ; Use multiple arguments <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Case $GUI_EVENT_CLOSE, $Button_3 Exit Case $Button_1 ; Ask first <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If MsgBox(4, "Confirm", "Are you sure?") = 6 Then Local $var_1 = Run("computer.domain.localTestTest.bat") ; Check $var_1 here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If $var_1 Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndIf Case $Button_2 Local $var_2 = Run("computer.domain.localTestTest2.bat") If $var_2 Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndSwitch WEndPlease ask if anything is unclear. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 Great that solves the first issue Now I need to work on the other 2 Thanks Grimm Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 grimmlock,Look closer - in the case of $Button_1 it answers number 2 as well. And as for number 3 - look at StdoutRead in the Help file - although you will need to change the code quite a lot if you want to do that. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 Your the best Thank you Grimm Thanks Grimm
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 So far I found thisSo I tried to incorporate it into my script and something still needs to be tweaked.expandcollapse popup#include <GUIConstantsEx.au3> Main() Func Main() GUICreate("Test", 200, 320) ; will create a dialog box that when displayed is centered Local $Label1 = GUICtrlCreateLabel("Copy SpringBrook Databases", 10, 10, 200) Local $Label2 = GUICtrlCreateLabel("Copy DB 4 to 5: ", 20, 43, 75) Local $Label3 = GUICtrlCreateLabel("Copy DB 5 to 6: ", 20, 73, 75) Local $Label4 = GUICtrlCreateLabel("Output: ", 20, 103, 50) local $Button_1 = GUICtrlCreateButton("Run", 125, 35, 50) local $Button_2 = GUICtrlCreateButton("Run", 125, 65, 50) local $Button_3 = GUICtrlCreateButton("Ok", 125, 285, 50) Local $Edit_1 = GUICtrlCreateEdit("", 10, 123, 175, 150, BitOR(0x00200000,0x0800)) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() ; Use multiple arguments <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Case $GUI_EVENT_CLOSE, $Button_3 Exit Case $Button_1 ; Ask first <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If MsgBox(4, "Confirm", "Are you sure?") = 6 Then $var_1 = Run("\\computer.domain.local\Test\Test.bat") ; Check $var_1 here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If $var_1 Then $PID = Run(@ComSpec & " /C " & $var_1, "",@SW_HIDE,0x2) ProcessWaitClose($PID) GUICtrlSetData($EDIT_1,StdoutRead($PID)) MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndIf Case $Button_2 ; Ask first <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If MsgBox(4, "Confirm", "Are you sure?") = 6 Then Local $var_2 = Run("\\computer.domain.local\Test\Test2.bat") ; Check $var_1 here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If $var_2 Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndIf EndSwitch WEnd EndFuncGrimm Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 grimmlock,You need to wait and read the return values. Her is an example using "set":expandcollapse popup#include <GUIConstantsEx.au3> #include <Constants.au3> Main() Func Main() GUICreate("Test", 200, 320) ; will create a dialog box that when displayed is centered Local $Label2 = GUICtrlCreateLabel("Run Set", 20, 43, 75) Local $Label4 = GUICtrlCreateLabel("Output: ", 20, 103, 50) Local $Button_1 = GUICtrlCreateButton("Run", 125, 35, 50) Local $Button_3 = GUICtrlCreateButton("Ok", 125, 285, 50) Local $Edit_1 = GUICtrlCreateEdit("", 10, 123, 175, 150) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $Button_3 Exit Case $Button_1 If MsgBox(4, "Confirm", "Are you sure?") = 6 Then ; Here we run the "set" command Local $iPID = Run(@ComSpec & " /c set", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) ; Now we read the returned values While 1 $sLine = StdoutRead($iPID) ; Until there are no more If @error Then ExitLoop ; And we add the returns to the edit control If StringLen($sLine) > 0 Then GUICtrlSetData($Edit_1, $sLine & @CRLF) WEnd If $iPID Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndIf EndSwitch WEnd EndFunc ;==>MainClearer now? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 Thank you again, I took what you posted and finally came up with this, and it does output a command prompt to me. I have to apologize I am still learning. This is what I have expandcollapse popup#include <GUIConstantsEx.au3> #include <Constants.au3> Main() Func Main() GUICreate("SB Batch File", 200, 320) ; will create a dialog box that when displayed is centered Local $Label1 = GUICtrlCreateLabel("Copy SpringBrook Databases", 10, 10, 200) Local $Label2 = GUICtrlCreateLabel("Copy DB 4 to 5: ", 20, 43, 75) Local $Label3 = GUICtrlCreateLabel("Copy DB 5 to 6: ", 20, 73, 75) Local $Label4 = GUICtrlCreateLabel("Output: ", 20, 103, 50) local $Button_1 = GUICtrlCreateButton("Run", 125, 35, 50) local $Button_2 = GUICtrlCreateButton("Run", 125, 65, 50) local $Button_3 = GUICtrlCreateButton("Ok", 125, 285, 50) Local $Edit_1 = GUICtrlCreateEdit("", 10, 123, 175, 150, BitOR(0x00200000,0x0800)) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() ; Use multiple arguments <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Case $GUI_EVENT_CLOSE, $Button_3 Exit Case $Button_1 ; Ask first <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If MsgBox(4, "Confirm", "Are you sure?") = 6 Then ; Check $var_1 here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Local $PID = Run(@ComSpec & " /set c " & "networkcomputer.domain.localTesttest.bat", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) While 1 $sLine = StdoutRead($PID) If @error Then ExitLoop If StringLen($sLine) > 0 Then GUICtrlSetData($Edit_1, $sLine & @CRLF) WEnd If $PID Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndIf Case $Button_2 If MsgBox(4, "Confirm", "Are you sure?") = 6 Then ; This next line should error out as there is not a test5.bat Local $iPID = Run(@ComSpec & " /set c " & "networkcomputer.domain.localTesttest5.bat", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) While 1 $tLine = StdoutRead($iPID) If @error Then ExitLoop If StringLen($tLine) > 0 Then GUICtrlSetData($Edit_1, $tLine & @CRLF) WEnd If $iPID Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndIf EndSwitch WEnd EndFunc Thanks Grimm Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 grimmlock,I have to apologize I am still learningAbsolutely no need to apologise - we all started as beginners at some point. Glad you got it working as you wanted. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 I think I forgot to mention this. I still need some help. Currently what it does is output a basic command prompt, much like you would see if you opened a new cmd window, the issue however it that is still does not output the batch file i am trying to run. Grimm Thanks Grimm
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 (edited) Please ignore my last post, all I did was remove the @ComSpec & " /set c " & from each of the local $PID and $iPID lines and now it works great. Here is the final code: expandcollapse popup#include <GUIConstantsEx.au3> #include <Constants.au3> Main() Func Main() GUICreate("SB Batch File", 200, 320) ; will create a dialog box that when displayed is centered Local $Label1 = GUICtrlCreateLabel("Copy SpringBrook Databases", 10, 10, 200) Local $Label2 = GUICtrlCreateLabel("Copy DB 4 to 5: ", 20, 43, 75) Local $Label3 = GUICtrlCreateLabel("Copy DB 5 to 6: ", 20, 73, 75) Local $Label4 = GUICtrlCreateLabel("Output: ", 20, 103, 50) local $Button_1 = GUICtrlCreateButton("Run", 125, 35, 50) local $Button_2 = GUICtrlCreateButton("Run", 125, 65, 50) local $Button_3 = GUICtrlCreateButton("Ok", 125, 285, 50) Local $Edit_1 = GUICtrlCreateEdit("", 10, 123, 175, 150, BitOR(0x00200000,0x0800)) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() ; Use multiple arguments <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Case $GUI_EVENT_CLOSE, $Button_3 Exit Case $Button_1 ; Ask first <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If MsgBox(4, "Confirm", "Are you sure?") = 6 Then ; Check $var_1 here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Local $PID = Run("remotecomputer.domain.localTesttest.bat", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) While 1 $sLine = StdoutRead($PID) If @error Then ExitLoop If StringLen($sLine) > 0 Then GUICtrlSetData($Edit_1, $sLine & @CRLF) WEnd If $PID Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndIf Case $Button_2 If MsgBox(4, "Confirm", "Are you sure?") = 6 Then Local $iPID = Run("remotecomputer.domain.localTesttest2.bat", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) While 1 $tLine = StdoutRead($iPID) If @error Then ExitLoop If StringLen($tLine) > 0 Then GUICtrlSetData($Edit_1, $tLine & @CRLF) WEnd If $iPID Then MsgBox(0, "Success", "Succesfull") Else MsgBox(0, "Error", "Error") EndIf EndIf EndSwitch WEnd EndFunc Grimm Edited December 14, 2012 by grimmlock Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 grimmlock,My apologies - I did not realise you still had problems. What you have done is exactly correct - I only needed the @Comspec part to run the simple DOS command. That way I could be sure that you and I would both have useable running code to discuss if you had problems. But you got there in the end! M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 Ok so one more bug, sorry, when I have a long script running, it only appears to send the first couple of lines to the output ($Edit_1). I tried using the RunWait command but it gives me nothing but errors when I try to use that command. Any thoughts? Grimm Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 grimmlock,At a guess the bat file is pausing and so the STDOUT stream is halted long enough for @error to action the escape from the loop. Try this and see if it works - obviously I cannot test it: While 1 $sLine = StdoutRead($PID) ; An error arrives - possibly the bat file is not sending anything at the moment If @error Then ; So get a timestamp if one is not already set If Not $iBegin Then $iBegin = TimerInit() Else ; Or reset the timestamp $iBegin = 0 EndIf ; Send the data If StringLen($sLine) > 0 Then GUICtrlSetData($Edit_1, $sLine & @CRLF) ; Now see if a timestamp has been set and if we has exceeded the limit - here it is 10 secs If $iBegin And TimerDiff($iBegin) > 10 * 1000 Then ; If so then we exit ExitLoop EndIf WEndAny luck? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 Funny thing, now I get an error that has to do with the Switch and EndSwitch statements. It says I do not have one but I clearly do. Grimm Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 grimmlock, Post what you have and I will take a look. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 expandcollapse popup#include <GUIConstantsEx.au3> #include <Constants.au3> Main() Func Main() GUICreate("SB Batch File", 200, 320) ; will create a dialog box that when displayed is centered Local $Label1 = GUICtrlCreateLabel("Copy SpringBrook Databases", 10, 10, 200) Local $Label2 = GUICtrlCreateLabel("Copy DB 4 to 5: ", 20, 43, 75) ; Local $Label3 = GUICtrlCreateLabel("Copy DB 5 to 6: ", 20, 73, 75) Local $Label4 = GUICtrlCreateLabel("Output: ", 20, 103, 50) local $Button_1 = GUICtrlCreateButton("Run", 125, 35, 50) ; local $Button_2 = GUICtrlCreateButton("Run", 125, 65, 50) local $Button_3 = GUICtrlCreateButton("Ok", 125, 285, 50) Local $Edit_1 = GUICtrlCreateEdit("", 10, 123, 175, 150, BitOR(0x00200000,0x0800)) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $Button_1 ; Ask first <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If MsgBox(4, "Confirm", "Are you sure?") = 6 Then ; Check $var_1 here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Local $PID = Run("remotecomputer.domain.localTesttesta.bat", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) While 1 $sLine = StdoutRead($PID) ; An error arrives - possibly the bat file is not sending anything at the moment If @error Then ; So get a timestamp if one is not already set If Not $iBegin Then $iBegin = TimerInit() Else ; Or reset the timestamp $iBegin = 0 EndIf ; Send the data If StringLen($sLine) > 0 Then GUICtrlSetData($Edit_1, $sLine & @CRLF) ; Now see if a timestamp has been set and if we has exceeded the limit - here it is 10 secs If $iBegin And TimerDiff($iBegin) > 10 * 1000 Then ; If so then we exit ExitLoop EndIf WEnd EndFunc Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 grimmlock,You had overwritten or omitted all the lines between the 2 WEnds. This version will run: expandcollapse popup#include <GUIConstantsEx.au3> #include <Constants.au3> Main() Func Main() GUICreate("SB Batch File", 200, 320) ; will create a dialog box that when displayed is centered Local $Label1 = GUICtrlCreateLabel("Copy SpringBrook Databases", 10, 10, 200) Local $Label2 = GUICtrlCreateLabel("Copy DB 4 to 5: ", 20, 43, 75) ; Local $Label3 = GUICtrlCreateLabel("Copy DB 5 to 6: ", 20, 73, 75) Local $Label4 = GUICtrlCreateLabel("Output: ", 20, 103, 50) Local $Button_1 = GUICtrlCreateButton("Run", 125, 35, 50) ; local $Button_2 = GUICtrlCreateButton("Run", 125, 65, 50) Local $Button_3 = GUICtrlCreateButton("Ok", 125, 285, 50) Local $Edit_1 = GUICtrlCreateEdit("", 10, 123, 175, 150, BitOR(0x00200000, 0x0800)) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $Button_1 ; Ask first <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If MsgBox(4, "Confirm", "Are you sure?") = 6 Then ; Check $var_1 here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Local $PID = Run("remotecomputer.domain.localTesttesta.bat", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) While 1 $sLine = StdoutRead($PID) ; An error arrives - possibly the bat file is not sending anything at the moment If @error Then ; So get a timestamp if one is not already set If Not $iBegin Then $iBegin = TimerInit() Else ; Or reset the timestamp $iBegin = 0 EndIf ; Send the data If StringLen($sLine) > 0 Then GUICtrlSetData($Edit_1, $sLine & @CRLF) ; Now see if a timestamp has been set and if we has exceeded the limit - here it is 10 secs If $iBegin And TimerDiff($iBegin) > 10 * 1000 Then ; If so then we exit ExitLoop EndIf WEnd EndIf ; Was missing EndSwitch ; Was missing WEnd ; Was missing EndFunc ;==>MainBut does it work? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
grimmlock Posted December 14, 2012 Author Posted December 14, 2012 Sorry long day and long week Ran it, error: If Not $iBegin Then $iBegin = TimerInit() Error (on $iBegin) Variable used without being declared. But you declare it just below that statement. Grimm Thanks Grimm
Moderators Melba23 Posted December 14, 2012 Moderators Posted December 14, 2012 (edited) grimmlock,My fault - add:Global $iBegin = 0at the top of the script. Obviously a long week for me too! M23Edit:Or Local $iBegin = 0 at the top of the function. Edited December 14, 2012 by Melba23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
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