AutoIt - Ein Programm (.exe) erstellen geschlossen 

Status
Für weitere Antworten geschlossen.

FeliX_22

Stammuser
Registriert
Juli 2002
Beiträge
1.620
Hallo!

Ich möchte allen Codern und Nichtcodern, die es noch nicht kennen, ein nettes Programm vorstellen, es ist Freeware und heißt AutoIt, ihr findet es hier: AutoIt v3 - Automate and Script Windows Tasks - For Free! Eine kurze Einführung findet ihr bei AutoIt - Wikipedia.

Mit AutoIt schreibst du Quelltext. Die Syntax ähnelt der von (Visual)Basic. Doch entweder möchte man sich (meist zu unrecht) an eine Sprache wie VB oder Delphi nicht ran wagen, andererseits bieten Scripts nicht auf Anhieb eine grafische Oberfläche. AutoIt ist jedoch vielseitiger als Scripts.

Hier mal ein kleines Programm, mit dem du ein Fenster (Dialogbox) erzeugst, wobei dieses Beispiel wirklich minimal ist.

Code:
; Dieses Script erzeugt eine DialogBox
#include 

; GUI
$title = "Ein Programm"
GuiCreate($title, 300, 280)

; PIC
GuiCtrlCreatePic("picture.bmp", 10, 10, 160,160)

; LABEL
GuiCtrlCreateLabel("Hier steht ein Text," & @CRLF & _
"auf Wunsch mit" & @CRLF & "Zeilenumbrüchen.", 190, 50)

; GROUP WITH RADIO BUTTONS
GuiCtrlCreateGroup("Auswahl", 190, 110, 90, 70)
$option1 = GuiCtrlCreateRadio("Option 1", 210, 130, 80)
GuiCtrlSetState(-1, $GUI_CHECKED)
$option2 = GuiCtrlCreateRadio("Option 2", 210, 155, 80)
GUICtrlCreateGroup ("",-99,-99,1,1) ;close group

; BUTTON
$button_1 = GuiCtrlCreateButton("OK", 50, 200, 100)
$button_2 = GuiCtrlCreateButton("Abbrechen", 150, 200, 100)

; (c)
GuiCtrlCreateLabel("© FeliX_22", 120, 250)

; GUI MESSAGE LOOP
GuiSetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $button_1
If BitAND(GUICtrlRead($option1),$GUI_CHECKED)=$GUI_CHECKED Then
MsgBox(8256, $title, "Option 1")
Elseif BitAND(GUICtrlRead($option2),$GUI_CHECKED)=$GUI_CHECKED Then
MsgBox(8256, $title, "Option 2")
EndIf
Case $msg = $button_2
MsgBox(8256, $title, "Du hast auf Abbrechen geklickt.")
Exit
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
So sieht das dann aus:

autoitrf6.jpg

In AutoIt hast du alle möglichen Control-Elemente, wie du sie von Windows kennst: Listenfelder, Slider, Progressbar, Kalender, TreeView, Kontextmenüs, u.v.m... Mit AutoIt kannst du z.B. Maus und Tastaturverhalten simulieren, um so Windows und Programme zu automatisieren. Die Script-Dateien (.au3) werden vom AutoIT Script to EXE Converter in eine .exe Datei umgewandelt. Dies geschieht je nach Wunsch in Unicode, für alte Windows 9x-Systeme in ANSI, oder aber für x64-Systeme.

Ich hoffe ich konnte euch AutoIt näher bringen. Es sind viele Beispiel-Dateien vorhanden, also einfach installieren und die Möglichkeiten ansehen. Dies hier ist nur ein kleiner Abriss dessen, was AutoIt bietet.

Gruß

FeliX_22

Diese Info entstand aus der Inspiration nach der einfachen Frage "Wie erstelle ich ein Programm (eine .exe)?"
 
Zuletzt bearbeitet von einem Moderator:
Danke für die nette Idde.

// bitte hier drunter nur Fragen und keine reinen Lobhymnen. Ob verdient oder nicht, es dient der Übersicht!
 
Zuletzt bearbeitet von einem Moderator:
frage und wie kann ich dan den einzelnen optionen etwas zuweisen??


also ich will einen bot machen und will halt bei option1 soll der " das und das" machen und bei option 2 "das und das"


wie mache ich das??
 
Ich habe den Code angepasst. Um die Optionen abzufragen, musst du die Werte in Variablen schreiben:

Code:
$option1 = GuiCtrlCreateRadio("Option 1", 210, 130, 80)
GuiCtrlSetState(-1, $GUI_CHECKED)
$option2 = GuiCtrlCreateRadio("Option 2", 210, 155, 80)

Nach dem Klick auf OK fragst du mit If ab, ob die Option gesetzt ist:

Code:
If GUICtrlRead($option1) = $GUI_CHECKED Then

Es ist aber besser den Wert bitweise mit UND zu verknüpfen, damit ein Bool-Wert rauskommt:

Code:
If BitAND(GUICtrlRead($option1),$GUI_CHECKED) = $GUI_CHECKED Then
; Anweisungen
... und für die andere Option ebenso: ...
Elseif BitAND(GUICtrlRead($option2),$GUI_CHECKED) = $GUI_CHECKED Then
; Anweisungen
...

Jetzt fehlen nur noch die Anweisungen, die du ausführen willst.

Gruß

FeliX_22
 
Es ist aber besser den Wert bitweise mit UND zu verknüpfen, damit ein Bool-Wert rauskommt

Ok also wenn ich das richtig verstanden habe, dann werden bei
Code:
BitAND(GUICtrlRead($option1),$GUI_CHECKED)
GUICtrlRead($option1) und $GUI_CHECKED bitweise verundet.
Und wenn Option 1 gewaehlt wurde, kommt da $GUI_CHECKED raus, weil x & x = x.
Und danach pruefst du nun, ob es $GUI_CHECKED ist:
Code:
BitAND(GUICtrlRead($option1),$GUI_CHECKED) = $GUI_CHECKED

Aber ist das nicht exakt das Selbe wie das vorher Beschriebene:
Code:
GUICtrlRead($option1) = $GUI_CHECKED
nur laenger und umstaendlicher?

Also ich sehe nicht, welchen Vorteil das Verunden bringen soll, denn das Verunden ergibt ja nur dann $GUI_CHECKED, wenn beide Werte $GUI_CHECKED sind und dann kann man doch gleich mit nem "=" pruefen ob sie gleich sind?
Und wenn ich z.B. zwei Integer bitweise verunde, dann kommt ja auch wieder ein Integer raus und kein Bool.

Edit: Ok, ich glaub ich weiss, was du meinst.
 
Zuletzt bearbeitet von einem Moderator:
Ich weiß genau was du meinst, das hab ich erst auch so gedacht. Aber wenn du dich mal auf bestimmen AutoIt-Seiten umschaust, merkst du, dass die Abfrage mit $GUI_CHECKED immer mit BitAnd verknüpft wird. Scheint eine Eigenart der Sprache zu sein.

Aber wie schon gesagt, die einfache Abfrage auf Gleichheit sollte auch funktionieren. Mit der BitAnd-Alternative ist man auf der sicheren Seite, weil je nach deinem Code eine $variable Integerwerte haben kann, die du mit BitAnd in einen Bool-Wert umrechnest.

Und ich erinnere daran, dass dieser Thread nur für den Einstieg in AutoIt gedacht war (wie der Threadtitel hoffentlich nahelegt). Ich selbst code lieber vbs :D

Gruß

FeliX_22

EDIT: Und hier gibts noch paar Eigentümlichkeiten von js: http://wtfjs.com/
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten