Imbuter2000 Posted July 3, 2012 Share Posted July 3, 2012 I need to read a piece of code (multiple lines of free code) from a text area (GUICtrlCreateEdit) in GUI and execute it. Is it possible (without saving it as au3 and running it)? if so, how? Link to comment Share on other sites More sharing options...
abberration Posted July 3, 2012 Share Posted July 3, 2012 It looks like it can be done with /AutoIt3ExecuteLine. I have been working with inserting an input line to the code to give you a decent example, but I have not been successful in making it work. I think my trouble is getting the single and double quotes correct. Here is the example from the help file: Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Hello World!'', ''Hi!'')"') Easy MP3 | Software Installer | Password Manager Link to comment Share on other sites More sharing options...
Imbuter2000 Posted July 3, 2012 Author Share Posted July 3, 2012 It looks like it can be done with /AutoIt3ExecuteLine. I have been working with inserting an input line to the code to give you a decent example, but I have not been successful in making it work. I think my trouble is getting the single and double quotes correct. Here is the example from the help file: Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Hello World!'', ''Hi!'')"') Thanks for the suggestion... but what if they are multiple lines of code? and... important... in that code can I use variables declared in the parent code or declare variables that are then used in the parent code? I need it to execute it as if it were a part of the parent code... Link to comment Share on other sites More sharing options...
Moderators JLogan3o13 Posted July 3, 2012 Moderators Share Posted July 3, 2012 Hi, Imbuter2000. That is a lot of "what-ifs". Can you give an example of the text you'd be trying to pull in and execute? "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum! Link to comment Share on other sites More sharing options...
AZJIO Posted July 4, 2012 Share Posted July 4, 2012 (edited) #include <File.au3> Global $PID $hGui = GUICreate('My Program', 300, 260) $iStart = GUICtrlCreateButton('Start', 10, 230, 120, 22) $iStop = GUICtrlCreateButton('Stop', 140, 230, 120, 22) $iEdit = GUICtrlCreateEdit('', 10, 10, 280, 180) GUISetState() While 1 Switch GUIGetMsg() Case $iStart $PID = _ExecuteFile(GUICtrlRead($iEdit)) Case $iStop If ProcessExists($PID) Then ProcessClose($PID) Case -3 Exit EndSwitch WEnd Func _ExecuteFile($sText) Local $hFile, $pid, $s_TempFile $s_TempFile = _TempFile() $hFile = FileOpen($s_TempFile, 2) FileWrite($hFile, $sText) FileClose($hFile) $pid = Run('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $s_TempFile & '"') Sleep(300) FileDelete($s_TempFile) Return $pid EndFunc Edited January 18, 2013 by AZJIO My other projects or all Link to comment Share on other sites More sharing options...
Imbuter2000 Posted July 4, 2012 Author Share Posted July 4, 2012 (edited) AZJIO: thanks but I wrote "without saving it as au3 and running it" for 2 reasons:- because in that user-defined code I want to use variables declared in the parent code and/or declare variables that are then used in the parent code- because I want to execute it in an endless fast loop so that I see the results while I type the code, and using a file would speed down the loop...JLogan3o13: an example of user-defined code is this:[/color][/font] $regex_before = "<a" _ & myfunction1("style","color:s*red") _ & myfunction1("class","arial24") _ & myfunction1("href","/user/.+?") _ & myfunction2(3) $regex_grab = grab($regex_before) $regex_after = "</as*>" $finalregex = "(?s)" & $regex_before & $regex_grab & $regex_afterThe parent app contains the functions myfunction1, myfunction2 and grab and must continually (in an endless loop) test $finalregex over an html page showing the results in a side area of the same GUI where this user-defined code is written... Edited July 4, 2012 by Imbuter2000 Link to comment Share on other sites More sharing options...
AZJIO Posted July 4, 2012 Share Posted July 4, 2012 (edited) Imbuter2000 I'll be busy for several hours. This was done while I was free. expandcollapse popup#include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) $Size = 8 Global $Disk = 'Q:' RunWait(@ComSpec & ' /C ' & @SystemDir & 'imdisk.exe -a -s ' & $Size & 'M -m ' & $Disk & ' -p "/fs:ntfs /y /q /v:imdisk', '', @SW_HIDE) $s_TempFile = $Disk & 'file.au3' FileCopy(@AutoItExe, $Disk & '1.exe', 9) Global $PID, $Toggle $hGui = GUICreate('My Program', 300, 260) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") $iStart = GUICtrlCreateButton('Start / Stop', 10, 230, 120, 22) GUICtrlSetOnEvent(-1, "_Toggle") $iEdit = GUICtrlCreateEdit('', 10, 10, 280, 180) GUISetState() While 1 If $Toggle Then _ExecuteFile(GUICtrlRead($iEdit)) EndIf Sleep(30) WEnd Func _Toggle() $Toggle = Not $Toggle If Not $Toggle And ProcessExists($PID) Then ProcessClose($PID) EndFunc Func _ExecuteFile($sText) If Not $sText Then _Toggle() Return EndIf Local $hFile If ProcessExists($PID) Then ProcessClose($PID) $hFile = FileOpen($s_TempFile, 2) FileWrite($hFile, $sText) FileClose($hFile) $PID = Run($Disk & '1.exe /AutoIt3ExecuteScript ' & $s_TempFile) EndFunc Func _Exit() RunWait('rundll32.exe imdisk.cpl,RunDLL_RemoveDevice ' & $Disk, '', @SW_HIDE) Exit EndFunc Edited January 18, 2013 by AZJIO My other projects or all Link to comment Share on other sites More sharing options...
Imbuter2000 Posted July 4, 2012 Author Share Posted July 4, 2012 Imbuter2000 I'll be busy for several hours. This was done while I was free. #include <GUIConstantsEx.au3> ... I tried it with the following code but nothing happens: $a = "one" msgbox(0,"",$a) and when I close it it gives an error saying that it can't find the file imdisk.cpl Link to comment Share on other sites More sharing options...
AZJIO Posted July 6, 2012 Share Posted July 6, 2012 (edited) and when I close it it gives an error saying that it can't find the file imdisk.cplGoogle for what? imdiskI tried it with the following code but nothing happens:You say to update the data. It is not intended to stop the script. Any msgbox will be killed the next step cycle (loop) of 30 milliseconds. In your answers, I realized that you still too early to use this script to solve problems. Edited July 6, 2012 by AZJIO My other projects or all 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