Hi fairyEm,

hui... Viel Spaß...

Da ihr dass in der Schule macht, erkläre ich jetzt nicht die Grundlagen. Wenn da Probleme sind, schau nochmal deine Unterlagen aus der Schule durch oder schreib mich an. Hier eher so ein Ansatz, wie man das umsetzen könnte...

Ich würde den Ansatz über Formen nehmen. Du baust dir also dein Spielfeld zusammen (Koda Form Designer) und lässt alle Blöcke weg. Außerdem bereitest du einen zweidimensionalen Array (Größe:[100][5]) für die Blöcke vor. Die Größe der Zeilen spiegelt dabei die maximale Anzahl an Blöcken (evt. ändern) , die Reihe spiegelt einmal die Art des Blockes ("L", "viereck", "linie", "z", "t") und die 4 BlockStücke selber (Tetrisblöcke bestehen immer aus 4 Stücken).

Wenn das spiel nun läuft, kannst du neue Formularelemente erstellen. (also vier neue Buttons etc.) Diese Elemente (Buttons) speicherst du an der entsprechenden Stelle im Array ab (Bsp. Bewegend immer auf [0], stehende Blöcke auf [1] bis [99] ) und lässt diese dann immer hinunter bewegen.

Ablauf also: Wenn auf [0] Elemente gespeichert sind, dann schaue, ob diese nach unten bewegbar sind. Wenn ja, dann bewege diese nach unten. Wenn nein, dann speichere die Buttons in die nächst freie Array-Zeile und mache [0] frei.

Wenn auf [0] frei ist, dann erstelle einen neuen Block und speichere diesen in [0].

Noch ein zwei Tipps:

  • Mache das nicht Dynamisch. Lieber eine Feldgröße von 200 px und Blockgrößen von 20px x 20px, ist einfacher für die Berechnungen.
  • Halte in einer eigenen Variable mit, was der höchste Block ist. So musst du nicht immer durchzählen.
  • Ich würde die Blöcke nicht mit in die Abfrage nehmen. Da klickt eh keiner drauf, das ist viel zu viel Arbeit, zieht unglaublich viel Prozessorzeit und was soll dann überhaupt passieren?
  • Setze dich frühzeitig dran! Das Projekt dauert lange!

Ich hoffe, ich konnte dir etwas helfen. Wenn du noch fragen hast, frag einfach!

Dornteufel

...zur Antwort

Hi Bavfighter,

ja, ist es. Jedoch finde ich deine Beschreibung recht schwammig. Ich versuche mein bestes, diese Frage zu beantworten. Falls es nicht klappt, beschreibe das Problem bitte noch einmal genauer in den Kommentaren.

Zur Situation: Ich denke, du willst den Text in der vorher beschriebenen Inputbox in dem zweiten Fenster ausgeben. Also: Text eingeben - Button drücken - Erstes Fenster schließt sich - Neues Fenster öffnet sich - Text wird angezeigt

Methode 1: Die vorgefertigten Funktionen

Hier ist nur das Wissen von Variablen wichtig. Kennst du wahrscheinlich schon, deshalb einfach nur der Quellcode:

$text = InputBox("Frage","Gib was ein")
MsgBox(0,"Antwort",$text)

Methode 2: Eigene Fenster beim Erstellen

Hier musst du beim Drücken auf den Button zuerst den Inhalt der InputBox auslesen.

$text = GUICtrlRead($inputbox)

Danach kannst du in dem neuen Fenster in das Label/Textfeld/Radiobutton etc. beim erstellen bereits den Text hinterlegen. (Beispielsweise hier bei einem Label)

$Label1 = GUICtrlCreateLabel($text,20,20)

Methode 3: Eigene Fenster während der Laufzeit

Wenn du den Text erst bei einem bestimmten Ereignis anzeigen lassen willst, kannst du auch vorhandene Labels/Textfelder... verwenden. Den Text eines Labels (und fast allem anderen) kannst du mit dem folgenden Befehl ändern:

GUICtrlSetData($Label1, $text)

Natürlich musst du den Text wie in Methode 2 vorher ausgelesen haben.

Ich hoffe, ich habe eine Möglichkeit für dich getroffen. Wenn nicht, melde dich einfach.

Dornteufel

...zur Antwort

Hi Spiegelfechter,

First of all, willst du das in AutoIT oder in JavaScript machen? Wenn AutoIT, dann kannst du JQuery vergessen. :( Falls du dass aber mit JavaScript machen möchtest, dann antworte mir nochmal kurz, und ich münze diese Antwort auf JQuery (oder PureJavaScript) um. Hier aber erst mal nur die AutoIT Variante.

Jede Website besteht aus Quellcode. Dieser Quellcode ist bei Spielen oder bekannten Websiten meist in einer Zeile zusammen komprimiert, jedoch kannst du in vielen Browsern mit F9, STRG-F9 oder STRG-SHIFT-I (oder Rechtsklick -> Element untersuchen) den Quellcode schön ordentlich dargestellt betrachten. Meist existiert hier auch eine hervorhebe Option, mit der du ein Element anklicken kannst und der Editor dann direkt zu diesem Element in dem Quellcode springt.

Hier musst du dir die Elemente nun ansehen. Was haben die Elemente gemeinsam? Worin erkennt man, ob ein Element ausverkauft ist?

Häufig spiegelt die ID des Elementes das Element selber wieder. So kannst du jedes Element unterscheiden. Es muss aber nicht so sein! Hier ist einfach Scharfsinn und ausprobieren gefragt.

Das Element selber kannst du dann in AutoIT und FF mit dem Befehl _FFClick anklicken. Hier musst du dann deinen eigenen Suchergebnisse einsetzen:

_FFClick("shop_item35", "id")

In diesem Beispiel klicke ich das Objekt in dem Quelltext an, welches die id=shop_item35 hat. Alternativ kannst du auch zum Beispiel dir die Klassen anschauen. Vielleicht hat jedes Shop-Element die selbe Klasse? Dann klicke das 35 Shop_element an:

_FFClick("shop_image", "class", 35)

Mehr Informationen dazu findest du hier: http://german.documentation.ff-au3.thorsten-willert.de/ff_functions/_FFClick.php

Das Auslesen der Daten ist leider nicht so einfach. Hier gibt es zwar die Methode _FFReadHTML(), jedoch gibt diese uns den kompletten Quelltext wieder. Hier muss man also irgendwie den Quelltext eingrenzen.

Mir haben die Befehle _StringBetween() und StringTrimLeft() / StringTrimRight() geholfen. Mithilfe von StringBetween kannst du den Text zwischen zwei Passagen herausfiltern, während du mit TrimLeft oder Right vorne und hinten noch Reste wegschneiden kannst. Wenn du Arrays schon kennst, kannst du dir diese Befehle mal ansehen.

Falls Probleme auftreten, antworte einfach nochmal auf diese Antwort. Ich versuche dann, dir beim Problem lösen zu helfen.

LG Lennard

(Und sorry, wenn ich etwas zu viel über HTML geredet habe...)

...zur Antwort

Hi Flooorii,

durch das win10 update wurden alle wichtige Treiber (auch Maus) neu installiert. Es kann sein, dass AutoIT diese Konfigurationen nicht übernommen hat. In diesem Falle sollte eine komplette Neuinstallation ADS Problem beheben (behalte deine Scripte).

Probiere mal ein simples Script, in welchem vorerst keine Treiber angesprochen werden. Bsp: MsgBox(0,"","Test")

Wie äußert sich denn das Problem? Wenn die Datei einfach nicht geöffnet wird, dann kann es auch an einer fehlenden Datei Zuweisung liegen.

...zur Antwort

Hi Flooorii,

Es ist einfach, mal schnell eine GUI mit Koda zu erstellen. Genauso einfach ist deine Aufgabe. Du musst einfach nur eine Variable erstellen, welche die Werte true und false verarbeitet. In der Funktion Start() (der Button und der HotKey verweisen einfach dann nur noch auf die Funktion) stellst du dann diese Variable auf true, in der Funktion Stop() änderst du die Variable auf false.

In deiner While-Schleife musst du dann nur noch überprüfen, ob die Variable auf true steht. Wenn ja, dann mache den Mausklick und lasse das Programm eine Sekunde schlafen. Wenn nein, lasse das Programm nur eine Sekunde schlafen.

Das ist im Prinzip alles, was du schreiben musst. Mehr ist nicht nötig um dein Problem zu lösen. Allerdings bin ich nicht gewillt, dir einfach nur einen Scriptcode vor deine Füße zu schmeißen, welchen du dann einfach nur übernimmst. Dabei lernst du nichts.

Wenn du nicht weißt, wie man eine Fallunterscheidung schreibt (Wenn die Variable true ist...) oder wenn du nicht weißt, was eine Variable ist, dann musst du wohl oder übel dich ein bisschen mit den Programmieren beschäftigen. Es ist wirklich nicht viel. Ich habe das Problem auch schon mindestens 5 mal in ähnliche Weise beantwortet und alle, welche sich damit auseinander gesetzt haben, haben es hinbekommen.

Ich werde dich natürlich bei weiteren Fragen gerne unterstützen, dieses setzt aber voraus, dass du dir mal die Materie genauer ansiehst und eventuell mal ein paar Tutorials durcharbeitest.

Dornteufel

...zur Antwort

Hi ZeroGrace,

Nur weil ich gerade extrem Gute Laune habe, gebe ich dir jetzt einfach den Quellcode. Ich bitte dich trotzdem, AutoIT zu lernen. Auf kurz oder lang wirst du sonst mit AutoIT nicht klar kommen. (Keine Sorge: Meiner Meinung nach ist AutoIT eine der einfachsten Programmiersprachen)

HotKeySet ("{ESC}","ende")
AdlibRegister("sekunde",200)


While 1
    Send("1")
WEnd

Func sekunde()
    Send("R")
    Send("T")
EndFunc

Func ende ()
    Exit
EndFunc

Viel Spaß damit. Bei Fragen frag einfach

Dornteufel

...zur Antwort

Hi KiFFr,

aber klar gibt es diese Möglichkeit.

Schritt 1: Alle Dateien in eine Liste speichern

#include File.au3
#include Array.au3

$dateien = _FileListToArray("C:\Users\Lennard\Desktop")

Schritt 2: Jede Datei einzelnt abarbeiten

For $i = 1 To $dateien[0]

Schritt 3: Wenn das Suchwort in der Datei vorkommt, die Suche anhalten!

    If StringInStr($dateien[$i],"Neues") {} 0 And StringInStr($dateien[$i],".") {} 0 Then
        MsgBox(0,"","Datei heißt '" & $dateien[$i] & "'")
        ExitLoop
    EndIf
Next

Bitte ersetze die {} durch <> . GuteFrage mag diese Zeichen irgendwie nicht so wirklich!

Bei Fragen, frage ruhig!

Dornteufel

...zur Antwort

Hallo Daniel16152000,

Also du brauchst einen Downloader für dein richtiges Programm. Hier würde ich mich auch meinem Vorgänger anschließen. Du solltest eine möglichst Hadware-Nahe Programmiersprache verwenden. Allerdings bin ich nicht bereit, dir einen perfekten Downloader zu Programmieren.

Du hast nun also 2 Möglichkeiten:

  1. Du lernst eine Sprache wie C (oder ähnliche) und schreibst dir damit deinen eigenen Downloader für dein Programm
  2. Du bleibst bei den Programmiersprachen, welche du bereits kennst ("Schuster bleib bei deinen Leisten") und schreibst den Downloader in deiner Sprache.

Dem PC ist dass vollkommen egal, welche Programmiersprache du verwendet hast, solange diese keine Fehler aufweist.

Dornteufel

...zur Antwort

Hallo Hiro3212,

Letzenendes fehlt mir hier (wie bei vielen anderen Fragen) eine Angabe: Wie lange programmierst du schon und wie lange davon mit AutoIT?

Wenn du gestern erst mit AutoIT angefangen hast, würde ich dir empfehlen die Funktion MouseMove zu benutzen. (https://www.autoit.de/dokumentation_aktuell/functions/MouseMove.htm)

In dem Falle, dass du dich mit AutoIT etwas besser auskennst, muss ich dich leider enttäuschen. Es gibt mit Sicherheit einen Weg, den Treiber anzusprechen, aber dieser ist nicht direkt in AutoIT implementiert. Somit bleibt dir keine Andere Wahl als eine Dokumentation für deinen Treiber herauszusuchen und diesen direkt anzusprechen. Hier würde ich aber spätestens nicht mehr mit AutoIT arbeiten, sondern auf Sprachen wie C umsteigen, da diese doch etwas effizienter sind als AutoIT (wir arbeiten immerhin nur mit einem Interpreter...)

Ob dieses allerdings funktioniert kann ich dir auch nicht sagen, da ich dieses auch nicht direkt getestet habe. Falls dieses aber für ein Spiel ist, kannst du vielleicht auch einfach in dem Spiel auf eine Betriebsystem-Orientierte Maus umstellen. Dieses würde dir extrem viel Zeit sparen und du könntest das selbe Ergebnis erzielen.

Ich hoffe, ich habe dir jetzt nicht dein Projekt zerstört. Wenn du noch Fragen hast, frag einfach!

Dornteufel

...zur Antwort

Nun... Erst einmal der Aufbau einer GUI:

#include (irgendwas... kein plan)

$hGui = GuiCreate()
$button = GuiInsertButton()
$textfeld = GuiInsertLabel()

GUISetState(@SW_SHOW)

Hier sehen wir zwei Sachen:

  1. Der Code ist aus meinem Gedächtnis entstanden, denn er ist einfach nur Falsch!!!! In den Klammern kommen natürlich noch ein paar Zeichen und die Befehle heißen eventuell auch anders... Das Prinzip ist aber richtig!
  2. Der Button und das Label bekommen jeweils eine Variable. In dieser Variable stehen alle Informationen über den Button/das Label drin, die dein Programm wissen muss.

Nun zum nächsten Teil. Deiner Variable:

$var = 0

Dieses Definiert einfach nur ein Startwert für deine Variable.

Nun zum wichtigsten Teil:

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Was auch immer da steht, es sieht kompliziert aus. Ist es aber nicht...

Um dass für dich einfacher zu halten, werde ich den Code etwas umschreiben, sodass die Switch-Struktur wegfällt:

While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
        Exit
    EndIf
WEnd

In der Variable $nMsg wird gespeichert, was gerade passiert ist. Wenn gerade $GUI_EVENT_CLOSE passiert ist (also man auf das X gedrückt hat), dann beendet sich das Programm von selbst.

Hier können wir ansetzen: Wenn jetzt der Knopf gedrückt wurde, dann können wir selber etwas hinzuschreiben:

If $nMsg = $GUI_EVENT_CLOSE Then
    Exit
ELSEIF $nMsg = $button Then
    variableHochzählen()
Endif

An der Stelle variable Hochzählen kann natürlich jetzt alles mögliche stehen. Zum Beispiel das hoch zählen von deiner Variablen:

$var = $var + 1

oder das Anzeigen deiner Variablen in dem Textfeld:

GUICtrlSetData($textfeld,$var)

oder sogar beides... Deiner Fantasie sind keine Grenzen gesetzt. Theoretisch kannst du sogar Aktionen programmieren, wenn jemand das X drückt, indem du deinen Code anstatt das Exit schreibst. Aber stell dann bitte sicher, dass man dein Programm irgendwie beenden kann. :)

Ich hoffe, ich konnte helfen. Wenn nicht frag einfach noch einmal. Dafür sind wir ja da!

Dornteufel

...zur Antwort

Bin in Urlaub und habe das Beispiel nicht durchgelesen. :D

Schau dir mal das unten stehende Beispiel an.

While 1

Irgendwas

If zum Anfang Then continueLoop

Wend

...zur Antwort

Hallo MaxChri.

Ich hoffe, ich habe dich richtig verstanden... Wenn nicht, antworte mir einfach. :)

Das mit einer Text-Datei zu machen, ist natürlich eine Möglichkeit, aber ich bevorzuge da lieber die INI-Datei. Wie dass geht, zeige ich dir unter dem strich unten.

Dein Anfang ist schon mal gut, aber direkt in der ersten Zeile ist ein Denkfehler. Wenn du die Datei löscht, dann kann man auch nicht mehr die Werte auslesen. Somit musst du dich erst um das auslesen kümmern. Hier kommt aber noch eine Schwierigkeit hinzu. Woran erkennst du, dass es sich bei der Zahl um die Höhe oder die Weite handelt. Ich habe das Script mal schreiben lassen und diese Zahl stand nachher in meiner Datei: "1366768" Na, welche Auflösung habe ich den?

Wir brauchen also irgendetwas, womit wir unterscheiden können, was was ist. Ich verwende jetzt in diesem Beispiel ein Trennzeichen, dass ich jetzt einfach mal auf ein Leerzeichen festsetze. Die erste Zahl ist also die Weite, danach kommt ein Leerzeichen zur Trennung und zum Schluss kommt die Höhe.

Jetzt, wo wir die Theorie erarbeitet haben, können wir ans Scripten gehen:

$PFAD = "Configuration\resolution.txt"

If FileExists ($PFAD) Then
    $raw = FileRead($PFAD)

Wenn diese Datei existiert, dann soll alles, was in der Datei steht in die Variable $raw gespeichert werden. Die Variable $PFAD ist nur dazu da, dass ich den Namen der Datei nicht immer ausschreiben muss. :D

Jetzt unterscheiden wir zwischen Breite und Höhe. Wir gehen einfach hin und Trennen den Text anhand des Trennzeichens.

$werte = StringSplit($raw," ")

Wir erhalten jetzt einen Array, wo alles vor dem Leerzeichen in $werte[1] steht und alles nach dem Leerzeichen in $werte[2] steht. Der Übersicht halber nenne ich diese Variablen noch um.

$width = $werte[1]
$height = $werte[2]

Dieses sind jetzt wieder ganz normale Variablen, die wir wie gewohnt verwenden können.

Information am Rande: Wenn wir "Höhe Leerzeichen Breite Leerzeichen Tiefe" in die Datei schreiben würden und dann die Funktion StringSplit ausführen würden, hätten wir zusätzlich noch $werte[3] für die Tiefe

Jetzt wo wir die Werte haben, können wir auch die Größe verändern. Als Beispiel könnte dass so aussehen:

If MsgBox(4,"Größe","Möchtest du die größe ändern?" & @CRLF & "Neue Größe: " & $width & "x" & $height) = 6 Then
    ;Größe Ändern - Kannst du hoffentlich selber
Else
    MsgBox(48,"Größe","Größe wurde nicht geändert" & @CRLF & "Neue Größe wird gespeichert...")
EndIf

Wenn wir sie jetzt geändert haben, können wir natürlich auch einfach die die Neue Größe einspeichern. Wenn sie nicht geändert wurde, gibt es entweder diese Datei nicht oder es soll die Aktuelle Größe gespeichert werden. In jedem Falle wird aber die momentane Größe gespeichert.

$resolution = @DesktopWidth  & " " & @DesktopHeight
If not FileExists($PFAD) Then _FileCreate($PFAD)
$file = FileOpen($PFAD,2)

Wenn die Datei noch nicht existiert, dann soll er sie erstellen. Dadurch, dass ich in FileOpen eine 2 ergänzt habe, lösche ich alles, was in der Datei vorher stand.

Jetzt noch schnell die neuen Werte eingetragen und fertig.

FileWrite($file, $resolution)
FileClose($file)

Zur Benutzung: Einmal starten und es passiert erst mal nichts. Es wird dann aber die Größe aufgezeichnet und gespeichert. Noch einmal starten und es kommt ein Fenster von wegen Größe ändern. Klickst du auf Ja, wird die Größe geändert (bitte noch ergänzen), klickst du auf nein, wird die aktuelle Größe fürs nächste mal gespeichert.

Und jetzt eben noch das ganze Script:

#include <File.au3>

$PFAD = "Configuration\resolution.txt"

If FileExists($PFAD) Then
    $raw = FileRead($PFAD)
    $werte = StringSplit($raw, " ")
    $width = $werte[1]
    $height = $werte[2]
    If MsgBox(4, "Größe", "Möchtest du die Größe ändern?" & @CRLF & "Neue Größe: " & $width & "x" & $height) = 6 Then
        ;Größe Ändern
    Else
        MsgBox(48, "Größe", "Größe wurde nicht geändert" & @CRLF & "Neue Größe wird gespeichert...")
    EndIf
EndIf


$resolution = @DesktopWidth & " " & @DesktopHeight
If Not FileExists($PFAD) Then _FileCreate($PFAD)
$file = FileOpen($PFAD, 2)
FileWrite($file, $resolution)
FileClose($file)

Meine Variante für ein ähnliches Script wären INI-Dateien. AutoIT bietet relativ gute INI-Funktionen an, sodass man selber nicht viel Scripten muss.

Eine INI ist folgend aufgebaut:

[Ueberschrift]
wertname=wert
wertname2=wert
[Ueberschrift2]
wertname=wert
wertname2=wert
wertname3=wert

Und so weiter und sofort. Die Funktionen, die wir jetzt verwenden, sind recht simpel:

IniRead ( Pfad , Überschrift , wertname , notfallwert )

Der Notfallwert wird dazu verwendet, wenn irgendetwas schief geht. Wenn die Datei zum Beispiel nicht existiert oder der Wert aus irgendeinem Grund fehlt, wird der Notfallwert zurückgegeben.

$PFAD = "Configuration\resolution.ini"

$width = IniRead($PFAD,"Grosse","width", @DesktopWidth)
$height= IniRead($PFAD,"Grosse","height",@DesktopHeight)

Es geht in einer Antwort weiter. Habe zu wenig Zeichen....

...zur Antwort

Doppellink: http://www.gutefrage.net/frage/ich-habe-ein-programm-autoit-brauche-eure-hilfe

...zur Antwort

Doppellink: http://www.gutefrage.net/frage/kann-mir-jemand-helfen-ich-habe-mir-autoit-instaliert-will-browsergames-damit-hacken-aber-komme-nich

Hallo wolborg.

Ich mag dich. AutoIT ist eine Programmiersprache, mit der man in erster Linie Tastaturbefehle nachahmen kann. Die einfachste Variante ist es, wenn du (getestet mit Windows 7) im Startmenü auf "AutoIT v3" -> "Extras" -> "Browse Extras" klickst und dort nach einem Programm namens "Au3Record" suchst (sollte im Regelfall auch ein Ordnername sein).

Danach loggst du dich in dein Spiel ein und gehst zu einer bestimmten Aktion. Wenn du dann in dem Programm (AU3Record) auf das Icon "Click to Record" clickst, nimmt AutoIT alle deine Tasterturbefehle auf und speichert sie. Oben in der Ecke siehst du dann ein Stop-Zeichen, mit dem du die ganze Aktion abbrechen kannst.

Wenn du damit fertig bist, kannst du mit "Save As" deine Datei irgendwo hin speichern (Wichtig: Dateiendung: .au3). Als nächstes gehst du hin und klickst auf diese Datei einen Rechtsklick und wählst "edit script" aus. Daraufhin erscheint noch mehr komplexer Text... :D Hier suchst du nur das Ende, wo Befehle wie "MouseClick", "Send", "MouseDown" / "MouseUp" etc. stehen. Ab "_WinWaitActive()" geht das eigentliche Script los, also dass, was du vorhin mit der Tastatur und der Maus eingegeben hast. Die Befehle erkläre ich jetzt nicht, aber du kannst einfach in Google "AutoIT Befehl" eingeben und er erste oder zweite Link ist meistens der zur Deutschen Dokumentation.

Wenn (was für ein Spiel häufig der Fall ist) du etwas warten musst, weil eine Ladesequenz (oder ähnliches) auftaucht, ergänzt du zwischen den Zeilen den Befehl "Sleep(1000)". Die 1000 steht in diesem Fall für 1000 MilliSekunden = 1 Sekunde. Wenn du nun 2 Minuten warten willst, dann kannst du auch einfach "Sleep(1000 * 60 * 2)" eingeben (also 1 Sekunde mal 60 = eine Minute mal 2 = zwei Minuten). So musst du nicht so viel rechnen. :D

Zum Schluss bleibt mir noch zu sagen, dass Hacken in der AutoIT-Community nicht gerne gesehen wird und dass diese Sprache eigentlich für andere Aktionen geschrieben wurde. Man kann damit natürlich hacken (siehe Bundestrojaner), aber dafür ist auch viel mehr Wissen am Programmieren notwendig. An deiner Fragestellung kann ich aber Ableiten, dass du diese nicht besitzt (nicht persönlich gemeint), und deswegen erkläre ich jetzt auch nicht, wie man den Browser manipuliert (zudem ich dass noch nie probiert habe) oder wie man allgemein den RAM-Speicher ändert. Wenn ich mich in dir getäuscht habe, dann schreib mir einfach nochmal, und ich werde dir helfen. (Verlange aber nicht von mir, dass ich dir ein Script schreibe. Da lernst du ja nichts bei!)

Ich hoffe, ich konnte dir helfen. Wenn nicht, schreib mir einfach nochmal!

Dornteufel

...zur Antwort

Ganz einfach... Das Script schaut sich alles an, merkt sich, was es in den Funktionen tun muss, macht aber noch nichts (soll ja auch erst, wenn du die Taste drückst) und dann erreicht das Script das Ende. Das Ende heißt in AutoIT immer, dass das Script sich selber beenden soll. Du hast also ein Programm, dass sich innerhalb von 0.01 Sekunden selbst beendet.

Um dieses zu verhindern, schreib einfach am ende des Scripts folgende Zeilen:

While 1 Sleep(100) Wend

Viel Glück

...zur Antwort

Hallo question500.

Ich kann mir irgendwie vorstellen, dass bei deinem Script nichts passiert... Du siehst wahrscheinlich unten im AutoIT-Fenster ein paar Zeilen, die neu hinzugekommen sind, und das war's, stimmts? Eigentlich ist das Problem recht simpel. Schauen wir uns mal an, was das Script macht:

Zeile 1-3 (in GF. Bei dir kann dass auch andere Zeilen sein. Bitte nächste mal den Quellcode-Button in GF): Der PC merkt sich, dass wenn die Tasten, die oben angegeben sind, gedrückt werden, die Funktionen aufrufen werden sollen.

Zeile 4: Funktion Start. Wenn diese Funktion aufgerufen wird, dann soll der die Taste W gedrückt halten.

Zeile 5: Funktion Pause. Wenn diese Funktion aufgerufen wird, dann soll er die Taste w loslassen.

Zeile 6-7: Wenn die Funktion Ende aufgerufen wird, dann soll das Script beendet werden.

Bis hier hin ist noch nichts passiert. Das Script hat sich alles gemerkt. Nun ist es aber am Ende des Programmierten angekommen, und dass heißt für AutoIT, dass das Script beendet wird. Stell dir einfach vor, dass AutoIT automatisch am Ende deines Quellcodes ein "Exit" ergänzt.

Du musst nun AutoIT daran hindern, an das Ende zu kommen, weil dann das Script ja beendet wird. Dieses macht man ganz einfach:

While 1=1
    Sleep(100)
Wend

Wir machen also am Ende des Scriptes eine sogenannte Schleife. Diese Schleife wiederholt sich so lange, wie 1=1 ist. Da 1=1 mathematisch immer gilt, wiederholt sich die Schleife auch immer! Wir haben also eine Endlosschleife. Das Sleep sorgt dafür, dass der PC sich für 100 Millisekunden (also 0.1 Sekunden) ausruhen kann und in der Zeit nicht rechnen brauch. Eigentlich kann man diese Zeile auch weg lassen, aber wir wollen den PC nicht überfordern. :D

Das Script bleibt nun am Ende deines Scriptes in dieser Schleife hängen und kommt somit nicht zum Ende des Scriptes. Die Funktionen, die du in HotKeySet angegeben hast, funktionieren trotzdem immer noch.

Probiere das mal. Bei weiteren Fragen frag einfach.

Dornteufel

...zur Antwort

Hallo kamilolsztyn. (richtig geschrieben?)

Ich denke mal, dass du AutoIT nutzen willst (siehe Tags). AutoIT-Scripte sind in erster Linie immer im Hintergrund. Du kannst zwar auch im Vordergrund agieren, aber eigentlich sieht man das Script nicht.

Zum agieren mit Fenstern im Hintergrund gibt es auch eine Spezielle Funktion: ControlSend. Problem hierbei ist nur, dass ControlSend nicht weiß, welches Fenster du von den 20 Fenstern im Hintergrund meinst. Deswegen brauchst du noch einige Informationen über das Fenster, welche du auch in der Klammer des ControlSend schreiben musst. Schau dir mal das Programm AutoIT-Window-Info an. Dort siehst du alle Informationen die du brauchst um die Funktion nutzen zu können.

Viel Glück damit. Bei Fragen frag einfach.

Dornteufel

...zur Antwort

Hallo CoockieBone

Da ich gerade nicht viel Zeit habe, hier einfach nur der Quellcode. Bei Fragen einfach fragen!

$input = InputBox("Titel","Bitte gebe eine URL ein!","<a href="http://www.abc.de/">http://www.abc.de/</a>")
ShellExecute($input)

Keine Garantie, da ich dass mal eben so heruntergetippt habe.

Viel Spaß damit

Dornteufel

...zur Antwort

Hallo CoockieBone

Wie wäre es, wenn du den Befehl send($name) verwendest?

Oder noch schneller würde das gehen, wenn du die Werte erst in den Zwischenspeicher kopierst und dann einfach nur

send("^v")

schreibst... Nur so als Ideen.

Viel Spaß damit. Bei fragen Frag einfach nach. Ich versuche sie zu beantworten...

Dornteufel

...zur Antwort