Mit Autoit ist kein Multitasking möglich. Du kannst höchstens ein zweites Script starten lassen welches auf dem anderen Kern läuft.
Ansonsten brauchst du für Multitasking eine höhere Programmiersprache (C++, Java, ...)
Beiträge von Schnitzel
-
-
RegEx ist hier doch ziemlich überdimensioniert. Einfache Stringfunktionen reichen da völlig aus.
Kleines Beispiel:Spoiler anzeigen
[autoit]While 1
[/autoit]
$input = InputBox('', 'Um etwas ausgeben zu lassen schreibe "Schreibe %Text%"' & @CRLF & 'Um das programm zu beenden schreibe "Exit"')
Select
Case StringLeft($input, = 'Schreibe'
MsgBox(0,'', Stringtrimleft($input, 8))
Case $input = 'Exit'
Exit
Case Else
MsgBox(0,'Unbekannter Befehl', $input)
EndSelect
WEnd -
Bin zwar noch am RegEx lernen, aber ich hab jetzt auch mal was zusammengebastelt.
Übung macht den MeisterSpoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
$Dateipfad = 'C:\Programme\AutoIt3\Include\array.au3'$aArray = _GetFunc($Dateipfad)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($aArray)$sFunc = _GetFunc($Dateipfad, "_arrayDisplay")
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite($sFunc & @CRLF)Func _GetFunc($File, $Func = "")
[/autoit]
ConsoleWrite("1" & @CRLF)
$sTextfromFile = FileRead($File)
If Not $Func Then
ConsoleWrite("2" & @CRLF)
Return StringRegExp($sTextfromFile, '(?iU)((?:;.*\s)+\s*Func(?s).*EndFunc.*)', 3)
Else
ConsoleWrite("3" & @CRLF)
$aRegEx = StringRegExp($sTextfromFile, '(?iU)((?:;.*\s)+\s*Func ' & $Func & '(?s).*EndFunc.*)', 3)
If Not @error and Ubound($aRegEx) = 1 Then
Return $aRegEx[0]
EndIf
EndIf
EndFuncWürd mich freuen wenn mir einer der RegEx-Profis Tipps zum "Besser machen" geben könnte
-
Jup genau das mache ich in meinem Script auch schon
Mir ist die Zwischenablage sehr wichtig deswegen will ich da keine Timestamps drin haben -
Ich hatte da gerade ne Quick 'n dirty Lösung gebastelt:
Spoiler anzeigen
[autoit]
#include "UnixTime.au3"
#include <IE.au3>Local $hp = "localhost/phpmyadmin", $dataold = ""
$oIE = _IECreate($hp)
While 1
$clip = ClipGet()
_IEAction($oIE, "copy")
$data = ClipGet()
If $dataold <> $data Then
StringRegExp($data, "\A\d{9,10}\Z", 2)
If Not @error Then
ToolTip(_StringFormatTime('%c', $data))
Else
Tooltip("")
EndIf
$dataold = $data
EndIf
ClipPut($clip)
Sleep(500)
WEnd
[autoit]Vorteil wäre dass man die Zwischenablage weiterhin normal verwenden kann. Man braucht lediglich den Timestamp im Explorerfenster markieren.
Vllt kannst dus ja noch gebrauchen
Ansonsten auch immer schön wenn die Fragenden selbst eine Lösung finden -
Herzlichen Glückwunsch nachträglich
-
Herzlichen Glückwunsch.
Feier schön und genieß den Tag -
Wichtig wäre zu wissen in welchen Programm du die Timestamps ansiehst und markierst.
Eine einfache Lösung ginge evtl. auch mit der MouseSetOnEvent_UDF.au3 (fällt mir jetzt spontan dazu ein^^ ) -
Wie schon gesagt wurde gehts über InetRead oder aber _INetGetSource (was im Prinzip auch nix anderes ist^^ )
Im Beispiel von DICE muss es natürlich auch InetGet heißen sonst funktionierts nicht^^
-
Probiers doch mal mit $GUI_CHECKED und $GUI_UNCHECKED
Oder meinst du wirklich Enable?Wenn ja was funktioniert nicht wie du es willst?
-
Ich denke mal du willst soetwas in der Art:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]Local $vorname, $nachname
[/autoit] [autoit][/autoit] [autoit]GUICreate("Eingabe Dialog")
[/autoit] [autoit][/autoit] [autoit]
$cInNname = GUICtrlCreateInput("Name", 10, 10)
$cInVname = GUICtrlCreateInput("Vorname", 10, 40)
$cBuShow = GUICtrlCreateButton("Daten zeigen", 10, 70)
GUISetState()While 1
[/autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $cInVname
$vorname = GUICtrlRead($cInVname)
Case $cInNname
$nachname = GUICtrlRead($cInNname)
Case $cBuShow
MsgBox(0,"Die Daten sind:", "Nachname: " & $nachname & @TAB & "Vorname: " & $vorname)
EndSwitch
WEndAls Konstanten würde ich die Daten nicht deklarieren. Es reicht ja wenn du sie in Variablen schreibst
-
Wegen eventueller späterer Rückfragen werden Threads hier nicht geschlossen.
Du könntest ihn aber auf gelöst setzen indem du den ersten Post bearbeitest, gelöst auswählst und das ganze speicherst -
Die Zeile 21 gehört in die zeile 12.
Kurz gesagt: du musst die Gui erst mit GuiSetState(@SW_SHOW) anzeigen bevor du die Progressbar veränderst.
Sonst siehst du das ganze erst nach der ganzen Veränderung, wie du ja schon bemerkt hast -
Hallo und Herzlich willkommen im Forum.
In meiner Signatur findest du einige Tutorials in denen du die Grundlagen nachlesen kannst.
Meiner Meinung nach brauchst du zumindest mal das Wissen wie Schleifen funktionieren.
Das was du willst kann man denke ich auch ohne Array's lösen. (wenn auch nicht so schön)Um dir ein Beispiel geben zu können wären genauere Angaben sehr gut.
Ideal wären 2 Dateien, eine "Vorher" und eine Nachher" Datei, dann sieht man am besten die Veränderung.
Ggf noch mit genauerer Erklärung.Gruß
Schnitzel -
Wenn es sich nur um Vorlagen und Dokumente und so handelt könntest du dir auch mal Dropbox ansehn.
http://www.dropbox.com/Das hätte den rießen Vorteil dass alles online liegt und nicht ein Rechner bzw. Server durchlaufen muss.
Strom ist ja auch nicht unbedingt billig -
Das ist etwas ungewöhnlich, wieso musst du den Ordner so oft öffnen?
-
Das könntest du mit _ArrayInsert umgehen.
Einfach einen leeren String bei index 0 einfügen -
Es kann immer nur eine Endlosschleife laufen -.-
Evtl kannste dir das mal ansehn, da wird sowas erklärt:
http://www.youtube.com/watch?v=N04WrgHpb-0Spoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]Local $foo = Run("C:\Users\Nathan\Desktop\Minecraft\Run.bat", "C:\Users\Nathan\Desktop\Minecraft\", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
[/autoit] [autoit][/autoit] [autoit]
Local $line
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDOUT read:", $line)
$line = StderrRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDERR read:", $line)
WendMsgBox(0, "Debug", "Exiting...")
[/autoit] -
Sieh dir mal das an:
[autoit]Controlcommand
[/autoit] -