Dieser Abschnitt stellt einige der im Forum häufiger gestellten Fragen zusammen. Wenn du die Antwort auf deine Frage hier nicht findest, dann sollte das Forum deine erste Anlaufstelle sein.
Wenn du etwas wie den DOS-Befehl "dir" ausführen möchtest, dann musst du dazu den Kommandozeileninterpreter verwenden (je nach Betriebssystem ist das "command.com" oder "cmd.exe"). Das Makro @ComSpec beinhaltet den korrekten Ort dieser Datei. Du solltest den RunWait()-Befehl verwenden, weil es auf die Beendigung des DOS-Programms abwartet, bevor die Ausführung des eigenen Skriptes fortgesetzt wird. Hier ein Beispiel, wie man den DOS-"dir"-Befehl auf das Laufwerk C:\ anwendet (tatsächlich wird folgendes ausgeführt: command.com /c Dir C:\ ):
@@SyntaxHighlighting@@ RunWait(@ComSpec & " /c Dir C:\") @@End@@
Nur wenige Dateitypen sind per Definition "ausführbar" - nämlich .exe, .bat, .com, .pif. Andere Dateitypen wie .txt und .msi werden von einem anderen Programm wiedergegeben. Wenn du auf eine Datei namens "my_installer.msi" doppelklickst, dann wird im Hintergrund "msiexec.exe my_installer.msi" ausgeführt. Um eine .msi-Datei auszuführen, kann man also folgendes tun:
@@SyntaxHighlighting@@ RunWait("msiexec my_installer.msi") @@End@@
Der noch einfachere Weg ist, den (DOS-)Befehl "start" aufzurufen, der sich selbst darum kümmert, wie die Datei auszuführen ist:
@@SyntaxHighlighting@@ RunWait(@ComSpec & " /c Start my_installer.msi") @@End@@Oder man verwendet die ShellExecuteWait Funktion, welche automatisch die Datei mit dem verknüpften Programm startet:
@@SyntaxHighlighting@@ ShellExecuteWait("my_installer.msi") @@End@@Wenn du doppelte Anführungszeichen innerhalb eines Strings verwenden möchtest, dann musst du sie "verdoppeln". Also immer zwei statt ein doppeltes Anführungszeichen. Wenn du also z.B. eine Variable in einen String einbinden willst (Ein Wort in "diesem" Satz hat Anführungszeichen um sich!), dann müsstest du das folgendermaßen schreiben:
@@SyntaxHighlighting@@ $vVar = "Ein Wort in ""diesem"" Satz hat Anführungszeichen um sich!" @@End@@or use single quotes instead:
@@SyntaxHighlighting@@ $vVar = 'Ein Wort in "diesem" Satz hat doppelte Anführungszeichen um sich!' @@End@@
Dazu gibt es hier eine detaillierte Beschreibung.
Angenommen, du hast eine Variable namens $msg und du möchtest sie in einer MessageBox ausgeben, dann wird das NICHT funktionieren:
@@SyntaxHighlighting@@ #includeDas wird einfach folgendes ausgeben: Meine Variable ist $msg. Du musst AutoIt anweisen, den Text und den Inhalt der Variablen zu verbinden. Dazu benötigst du den &-Operator:
@@SyntaxHighlighting@@ #include
Für Fortgeschrittene: Wenn du viele Variablen in einen String einbinden willst, dann könnte die StringFormat()-Funktion für dich interessant sein. Die Variablen $vVar1 bis $vVar5 bindest du so einfacher ein:
@@SyntaxHighlighting@@ #include
Wenn du den Inhalt einer Variablen per Send-Befehl weitergibst, dann bedenke, dass spezielle Zeichen wie !, ^, + oder {SPACE} umgewandelt werden. Das ist aber nur selten erwünscht. Um das zu umgehen, benutzt man den "RAW"-Modus des Send-Befehls, der diese Umwandlung nicht durchführt:
@@SyntaxHighlighting@@ Send($vMyVar, 1) @@End@@
Normalerweise wird der "return"-Wert dazu benutzt, anzugeben, ob eine Funktion erfolgreich durchgeführt wurde. Gibt die Funktion (wie z.B. WinGetText()) aber schon einen anderen Wert zurück, dann brauchen wir eine andere Möglichkeit, festzustellen, ob die Funktion erfolgreich ausgeführt wurde. Dazu dient dann @error.
Ah, etwas leichtes. Wenn du willst, dass sich dein Skript beendet, wenn du eine bestimmte Tastenkombination drückst, dann benutze die HotKeySet()-Funktion, um eine selbstdefinierte Funktion auszuführen. Diese sollte einfach das Schlüsselwort Exit enthalten.
Hier ein Stück Code, das das Skript beendet, wenn Strg + ALT + x gedrückt wird:
Dazu musst du den richtigen Compiler starten und nicht nur mit der rechten Maustaste auf das Skript klicken und "Compile" (=Kompilieren) auswählen. Diese Seite beschreibt den Compiler en detail.
Verwende die _Singleton() Funktion. Schau in der Dokumentation zu den benutzerdefinierten Funktion nach mehr Informationen für _Singleton() und wie es zu verwenden ist.
Hier sind die technischen Limitierungen von AutoIt v3. Bedenke, dass manche Begrenzungen theoretischer Natur sind und du sie möglicherweise aufgrund zuvor auftretender Speicher- oder Performanceprobleme gar nicht erreichen kannst.
Bitte beachte den Abschnitt AutoIt3 Standardbegrenzungen für die technischen Grenzen von AutoIt3.
Zusätzliche Informationen über die theoretischen Grenzen von AutoIt3.
Wert | Beschreibung |
---|---|
unlimitiert | Maximale Anzahl von GUI-Fenstern. |
unlimitiert | Maximale Anzahl benutzerdefinierter Funktionen. |
unlimitiert | Maximale Anzahl gleichzeitig benutzter Variablen. |
1.7E308 bis 1.7E+308 | Zahlenbereich (Gleitkommazahl) mit 15-stelliger Präzision. |
0x8000000000000000 bis 0x7FFFFFFFFFFFFFFF | Hexadezimaler Zahlenbereich (32-bit/64-bit signierte Integer). |
An dieser Stelle sollte eine Schaltfläche "Dieses Skript öffnen" sein, mit der man das Beispiel direkt im Editor öffnen kann.
In diesem Fall ist möglicherweise die Datei hhctrl.ocx nicht im System registriert oder beschädigt.
Man kann versuchen, "regsvr32 hhctrl.ocx" bei "Start", "Ausführen..." einzugeben, um damit dieses Problem zu beheben.