Häufig gestellte Fragen (FAQ)

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.

Fragen

  1. Wie kann ich DOS-Programme aus AutoIt heraus ausführen?
  2. Warum funktioniert der "run"-Befehl nur bei .exe- und .com-Dateien, nicht aber bei .msi-, .txt- oder anderen Dateien?
  3. Warum erhalte ich Fehlermeldungen, wenn ich doppelte Anführungszeichen (") verwende?
  4. Was bedeuten die Fenstertitel und -text Parameter?
  5. Warum kann ich Variablen nicht verwenden, indem ich folgendes schreibe: "Meine Variable hat den Wert $vVariable"?
  6. Warum passieren merkwürdige Dinge, wenn ich Variablen an den Send-Befehl übergebe?
  7. Was ist der Unterschied zwischen dem "return"-Wert und @error?
  8. Wie kann ich mein Skript über einen Hotkey beenden?
  9. Wie kann ich ein selbst gewähltes Icon benutzen, wenn ich mein Skript kompiliere?
  10. Wie kann ich sicher gehen, dass nur eine Instanz meines Skriptes läuft?
  11. Wo liegen die derzeitigen technischen Grenzen von AutoIt v3?
  12. Ich habe ein Symbol wie bei fehlenden Bildern unter den Beispielen in der Hilfe.

1. Wie kann ich DOS-Programme aus AutoIt heraus ausführen?

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@@

 

Zurück nach oben


2. Warum funktioniert der "run"-Befehl nur bei .exe- und .com-Dateien, nicht aber bei .msi-, .txt- oder anderen Dateien?

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@@

Zurück nach oben


3. Warum erhalte ich Fehlermeldungen, wenn ich doppelte Anführungszeihen (") verwende?

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@@

 

Zurück nach oben


4. Was bedeuten die Fenstertitel und -text-Parameter?

Dazu gibt es hier eine detaillierte Beschreibung.

 

Zurück nach oben


5. Warum kann ich Variablen nicht verwenden, indem ich folgendes schreibe: "Meine Variable hat den Wert $vVariable"?

Angenommen, du hast eine Variable namens $msg und du möchtest sie in einer MessageBox ausgeben, dann wird das NICHT funktionieren:

@@SyntaxHighlighting@@ #include MsgBox($MB_OK, "Beispiel", "Meine Variable ist $msg") @@End@@

Das 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 MsgBox($MB_OK, "Beispiel", "Meine Variable ist " & $msg) @@End@@

 

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 Local $sMessage = StringFormat("Var1 ist %s, Var2 ist %s, Var3 ist %s, Var4 ist %s", $vVar1, $vVar2, $vVar3, $vVar4) MsgBox($MB_SYSTEMMODAL, "", $sMessage) @@End@@

 

Zurück nach oben


6. Warum passieren merkwürdige Dinge, wenn ich Variablen an den Send-Befehl übergebe?

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@@

 

Zurück nach oben


7. Was ist der Unterschied zwischen dem "return"-Wert und @error?

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.

 

Zurück nach oben


8. Wie kann ich mein Skript über einen HotKey beenden?

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:

@@SyntaxHighlighting@@ HotKeySet("^!x", "MyExit") ... ... ; Rest des Skriptes ... ... Func MyExit() Exit EndFunc ;==>MyExit @@End@@

 

Zurück nach oben


9. Wie kann ich ein selbst gewähltes Icon benutzen, wenn ich mein Skript kompiliere?

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.

 

Zurück nach oben


10. Wie kann ich sicher gehen, dass nur eine Instanz meines Skriptes läuft?

Verwende die _Singleton() Funktion. Schau in der Dokumentation zu den benutzerdefinierten Funktion nach mehr Informationen für _Singleton() und wie es zu verwenden ist.

 

Zurück nach oben


11. Wo liegen die derzeitigen technischen Grenzen von AutoIt v3?

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).

 

Zurück nach oben


12. Ich habe ein Symbol wie bei fehlenden Bildern unter den Beispielen in der Hilfe.

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.

 

Zurück nach oben