Hallo,
wie kann man mit Execute eine While Schleife erstellen?
Also so gehts nicht:
[autoit]Execute("While 1"&@CRLF&"Wend")
[/autoit]Hallo,
wie kann man mit Execute eine While Schleife erstellen?
Also so gehts nicht:
[autoit]Execute("While 1"&@CRLF&"Wend")
[/autoit]Sehr schön. Pi kannst du auch so ausrechnen. Geht auch viel schneller:
[autoit]Func Pi()
Local $a = 2 * Sqrt(3)
Local $b = 3
Do
$a = 2 * $a * $b / ($a + $b)
$b = Sqrt($a * $b)
Until $a = $b
Return $a
EndFunc ;==>Pi
Meinst du es so?:
[autoit]Local $5
[/autoit][autoit][/autoit][autoit]EvaluateSingleLine($5, '$Handle = GUICreate("TestGUI", 300, 300)')
[/autoit][autoit][/autoit][autoit]GUISetState(@SW_SHOW,$5)
[/autoit][autoit][/autoit][autoit]MsgBox(0,"", $5)
[/autoit][autoit][/autoit][autoit]Func EvaluateSingleLine($Line, $Flag)
Local $sRegExPatternA = "^[ ]*\$(.*?)[ ]*=[ ]*(.*?)[ ]*$" ;Kommentare sind nicht erlaubt!!!
Local $sRegExPatternC = "^[ ]*(.*)[ ]*$" ;Kommentare sind nicht erlaubt!!!
Local $aRegEx
If IsArray(($aRegEx = StringRegExp($Line, $sRegExPatternA, 3))) Then ;für Assignments zB $xy = blaa
Assign($aRegEx[0], Execute($aRegEx[1]), $Flag) ;Flag für Scope der Variable (^= Global/Local)
ElseIf IsArray(($aRegEx = StringRegExp($Line, $sRegExPatternC, 3))) Then ;für reine Funktionen zB Send("#r")
Execute($aRegEx[0])
Else
SetError(1, $Line, False) ;Sonst wohl irgendeine andere Zeile
EndIf
SetExtended($Line, True)
EndFunc ;==>EvaluateSingleLine
Ich hab mal einen Beispiel erstellt:
[autoit]$Texdatei = 'GUICreate("TestGUI", 300, 300)' & @CRLF _ ;Handle von der GUI auslsen. Aber wie?
& "GUISetState()"
$Split = StringSplit($Texdatei, @CRLF)
[/autoit][autoit][/autoit][autoit]For $NextLoop = 1 To $Split[0]
If Not $Split[$NextLoop] = "" Then
Execute($Split[$NextLoop])
EndIf
Next
MsgBox(0,"","Ende")
[/autoit]Zeile 1: Hier steht das, was in der Textdatei stehen würde. Also GuiCreate. In einem normalen Script schreibt man ja immer
$GUI = GUICreate("Titel",600,600)
Variable $GUI gibt ja eigentlich immer das Handle wieder. Aber wie komme ich jetzt in meinem Script an diese Variable dran?
Also es geht ja erstmal allgemein um eine Plug-Inschnittstelle. Also ich wollte eine GUI erstellen lassen. Aber um es zu kontrollieren und um die Events auszulesen brauch ich ja die Variablen. Aber wie kann man das bewerkstelligen?
Ja. Aber wie soll man das jetzt einbauen? Mit Env* kenn ich mich überhaupt nicht so gut aus.
Also so meinte ich es nicht direkt. Also sagen wir mal in der Datei steht fogendes:
$Handle = GUICreate("Form1", 300, 300)
GUICtrlCreateInput("Input1", 8, 8, 121, 21)
GUICtrlCreateLabel("Label1", 8, 32, 36, 17)
GUICtrlCreateButton("Button1", 8, 48, 75, 25, 0)
GUISetState(@SW_SHOW)
wie kann man nun die Variable $Handle auslesen?
Ich hab das hier mal im Forum gelesen aber nicht mehr wiedergefunden. Es war irgendwaas mit EnvGet oder so. Keine Ahung.
weil es die Endung ico hat. Dafür müsstes du GuiCtrlCreateIcon nehmen.
Hallo,
ich versuche gerade eine kleine Plug-In UDF zu schreiben. So siehts im Moment aus:
[autoit]$Fileopen = FileOpen("Plug-In.txt",0)
[/autoit][autoit][/autoit][autoit]$Read = FileRead($Fileopen)
[/autoit][autoit][/autoit][autoit]$StringSplit = StringSplit($Read,@CRLF)
[/autoit][autoit][/autoit][autoit]For $Var1 = 1 To $StringSplit[0]
If Not $StringSplit[$Var1] = "" Then
Execute($StringSplit[$Var1])
EndIf
Next
Sleep(3000)
[/autoit]und die Textdatei:
GUICreate("Form1", 300, 300)
GUICtrlCreateInput("Input1", 8, 8, 121, 21)
GUICtrlCreateLabel("Label1", 8, 32, 36, 17)
GUICtrlCreateButton("Button1", 8, 48, 75, 25, 0)
GUISetState(@SW_SHOW)
So. Voher weiß nun mein Script, ob auf ein Button geklickt wurde. Kann man z.b. Variablen aus einer Textdatei auslesen?
Bin für jede Hilfe dankbar.
Hallo,
neue Version (Siehe Post 1)
@progandy. Wirkllich toll. Aber wenn ich die Demodatei beende kommt diese Fehlermeldung:
[Blockierte Grafik: http://download.lima-city.de/deepred/Bilder/9262611711175607352.jpg]
Eine Dll? Nee, viel zu umständlich. Schau dir doch mal die XPI Plug-In Dateien von Thunderbrird an (Man kann sie entpacken). ![]()
Kanntet ihr es vorher nicht? Das ist hoer schon seit einem Jahr
.
Also sowas? :
[Blockierte Grafik: http://static.sftcdn.net/de/scrn/56000/56478/3_activaid_neu_01.jpg]
Ja schon aber wenn "ichrootdunix" einen Script für jeden machen möchte ist es ja nicht gut, wenn wegen TCP sofort eine Meldung von Firewall erscheint. Aber Consolewrite Stdinoutread ist wohl das beste.
Vielleicht so (Anhang):
Wenn das Readonly werden soll kannst du es auch so machen:
[autoit]#include <GuiConstants.au3>
#include <EditConstants.au3>
GUICreate("HideEditBox", 479, 140)
GUICtrlCreateEdit("", 0, 0, 479, 120)
GUICtrlSetState(-1,$GUI_Disable)
GUICtrlCreatePic(@DesktopDir & "/autoitbanner.gif", 0, 80, 479, 60);$ES_READONLY
GUISetState()
While 1
Sleep(500)
WEnd
Es ist echt nützlich. Aber wenn ich es so 10x benutze, ist das Fenster nicht mehr da. Es ist nur in der Taskleiste sichtbar. Aber wenn ich die Options.ini lösche ist es wieder vorhanden.
ZitatEs bringt sowieso nichts, den Code nicht anzubieten, über Umwege bekommt man ihn so oder so...
...was natürlich illegal wäre
.
Vielleicht so:
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.2.13.4 (beta)
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Quelle = 'test.exe'
$Ziel = "tset.exe"
If _ProgressCopy($Quelle, $Ziel) Then MsgBox(0,"", "Kopiervorgang erfolgreich!")
[/autoit] [autoit][/autoit] [autoit]Func _ProgressCopy($SourceFile, $DestinationFile)
If Not FileExists($SourceFile) Then Return SetError(1,1,0)
If $SourceFile == $DestinationFile Then Return SetError(2,2,0)
#region------------------------------------Declare Variables-------------------------------
Local $ByteBlock, $Counter
Local Const $BlockSize = Int(FileGetSize($SourceFile) / 99)
Local Const $Opt = Opt("GUIOnEventMode", 0)
Local $OpenHandle = FileOpen($SourceFile, 16)
Local $WriteHandle = FileOpen($DestinationFile, 26)
#endregion---------------------------------------------------------------------------------
If $OpenHandle = -1 Or $WriteHandle = -1 Then Return SetError(3,3,0)
#region------------------------------------GUI create--------------------------------------
Local $GUI = GUICreate('', 400, 105, Default, Default, 0x80880000)
Local $Label1 = GUICtrlCreateLabel($SourceFile, 8, 10)
Local $Label2 = GUICtrlCreateLabel($DestinationFile, 8, 30)
Local $Label3 = GUICtrlCreateLabel("0%", 360, 25, 30, 20, 0x2)
Local $Button = GUICtrlCreateButton("Abbrechen", 160, 75, 80)
Local $PBar = GUICtrlCreateProgress(8, 50, 384, 20)
GUISetState()
#endregion---------------------------------------------------------------------------------
#region----------------------------------Copy File-----------------------------------------
Do
$ByteBlock = FileRead($OpenHandle, $BlockSize)
If @error Then ExitLoop
FileWrite($WriteHandle, $ByteBlock)
$Counter += 1
GUICtrlSetData($PBar, $Counter)
GUICtrlSetData($Label3, $Counter & ' %')
Sleep(20) ;Bremse - Auskommentieren für maximale Geschwindigkeit
Until 0
#endregion---------------------------------------------------------------------------------
Opt("GUIOnEventMode", $Opt)
FileClose($OpenHandle)
FileClose($WriteHandle)
GUIDelete($GUI)
Return 1
EndFunc