@ funkey
dafür braucht er dann aber adminrechte
(naja gut für die installationen dann wohl meist auch) 1:0 für dich ![]()
Und dein Avatar verspult mich noch immer ![]()
@ funkey
dafür braucht er dann aber adminrechte
(naja gut für die installationen dann wohl meist auch) 1:0 für dich ![]()
Und dein Avatar verspult mich noch immer ![]()
Also ich würde sagen JA. Den Unterschied wirst du aber erst bei sehr vielen Ctrls bemerken.
Generell finde ich den OnEvent Modus eine sehr feine sache das einzig blöde ist das man
1. keine Parameter übergeben kann (oder ich war bisher zu doof dafür
)
2. keine Standardfunktionen benutzen kann (z.b. Exit man muss dafür erst ne Func schreiben)
Was ich aber noch viel feiner find als den OnEventMode ist der WM_COMMAND
Das ist zwar ein bissl mehr arbeit beim Coden und am Anfang auch irgendwie net so leicht zu blicken aber wenn man es mal raus hat bieten sich einem ungeheure Möglichkeiten ![]()
Nicht nur die 2 oben genannten Punkte fallen hierbei weg sondern man kann auch auf verschiedene Aktionen des Users reagieren.
z.B. User macht einen Klick in ein ListView (kann man sowohl mit GetMsg als auch mit OnEvent abfragen)
Mit dem WM_COMMAND kann man nun aber auch Doppelklicks, Focus, Defocus uvm. abfragen, das ist wirklich genial ![]()
An dieser Stelle nochmal ein dickes Dankeschön an Xeno, mit seiner Hilfe hatte ich mir meinen ersten WM_COMMAND gebaut
(zum Autoausfüllen von Combos)
Ich glaub er meint was anderes.
Also du musst dir eine Verknüpfung oder kopie des scriptes (der .exe) in den autostart ordner machen. Dies würde dir nun bei jedem Autostart das script neu starten. Also brauchst du noch etwas womit das script weiss wo es weitermachen muss (siehe PokerFaces bsp). Vergiss aber am Ende des scripts bzw. des Vorgangs nicht die Verknüpfung / Kopie aus dem Autostartordner wieder rauszunehmen ![]()
So siehst du die Spieler nach Punkten geordnet.
#include<File.au3>
#include<Array.au3>
Opt("MustDeclareVars", 1)
Local $file, $split
_FileReadToArray(@ScriptDir&"\Points.txt", $file)
[/autoit] [autoit][/autoit] [autoit]Dim $stats[UBound($file)-1][3]
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To UBound($file) -1
$split = StringRegExp($file[$i], "\[ID\=(.+?)\#USER\=(.+?)\#P\=(.+?)\#\]", 1)
$stats[$i-1][0] = Number($split[0])
$stats[$i-1][1] = $split[1]
$stats[$i-1][2] = Number($split[2])
Next
_ArraySort($stats, 1, 0, 0, 2)
_ArrayDisplay($stats)
#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]$path = "C:\Windows\"
$file = "cmd.exe"
;Der richtige Pfad sollte sein C:\Windows\System32\cmd.exe, System32 ist also der Ordner den das Script finden soll
[/autoit] [autoit][/autoit] [autoit]$folders = _FileListToArray($path, "*", 2)
For $i = 1 To UBound($folders) -1
If FileExists($path&$folders[$i]&"\"&$file) Then
MsgBox(0, "Datei gefunden", "Datei gefunden in "&$path&$folders[$i]&"\"&$file)
ExitLoop
EndIf
Next
Das ist jetzt nur ein Beispielscript, es gibt deutlich bessere die auch in mehreren Schichten suchen können (Stichwort Rekursive Dateisuche)
Aber wenn es nur ein Ordner ist der sich ändert dann sollte das script hier funktionieren.
Was möchtest du denn machen?
Die Datei finden oder weisst du (bzw. das Script) wo die Datei ist und kennt den Pfad?
Such mal im Forum nach diesem Thema, das wurde schon 100erte male durchgekaut.
Ansonsten kannst du dir mal die TCPSend funktion anschauen (beispiel hilfe).
Und was lernen wir daraus?
Widersprich nie jemandem der 5000 Posts mehr als du hat ![]()
//EDIT oO Das war der böse Beitrag mit der Nummer 666 ![]()
ich glaub aber eher das es an dem iniread liegt hast du für jede datei ne eigene ini oder was?
random(1, 3)
[/autoit]Also bei mir kommt bei deinem Script schonmal ein Syntax error^^
Warum eine falsche Eingabe kommt?
Du schreibst die CtrlID in Notepad nicht aber den ausgelesenen text
Benutze dafür GUICtrlRead
Dann hast du dein Input 2 mal erstellt mit der gleichen Variable das kann auch nicht funktionieren
Dann waren deine Sends falsch Send(& $input) erzeugt einen Syntaxerror
Zudem brauchst du beim Send befehl nicht die Entertaste senden sondern @LF reicht auch ![]()
Hier ein funktionierendes Script
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("AP-Robo", 196, 138, 488, 310)
$Label1 = GUICtrlCreateLabel("Vaudis AP-Robo (C) by M.Langguth", 16, 24, 172, 17)
$Input1 = GUICtrlCreateInput("", 16, 56, 65, 21)
$Button1 = GUICtrlCreateButton("Go!", 16, 88, 65, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Label1
Case $Input1
Case $Button1
Run("notepad.exe")
WinWait("Unbenannt - Editor","")
If Not WinActive("Unbenannt - Editor","") Then WinActivate("Unbenannt - Editor","")
WinWaitActive("Unbenannt - Editor","")
Send(GUICtrlRead($Input1)&@LF)
EndSwitch
WEnd
schreib dir doch ne funktion die gleich beides erstellt, ne checkbox und ein label und vllt beide ctrlids als array zurückgeben
ich glaube eher nicht da musst du dich schon mit 2 labels vergnügen
da muss aber .exe dabeistehn sonst geht es meines wissens nicht. Und um eine .exe auszuführen brauchst du nicht shellexecute, da reicht auch run ![]()
was willst du denn ausführen das spiel oder was willst du genau machen?
Run("F:\X3-Reunion\X3.exe")
[/autoit]
evt?
1. Benutze wenn möglich anstatt Send ControlSend, damit kannst du buttons, inputs etc. direkt ansteuern (das fenster muss dazu auch nicht aktiviert sein)
2. Prüfe ob deine Installation die Möglichkeit einer SilentInstall hat sodass du die installation per CMD-Line Parameter steuern kannst und das nicht per GUI machen musst
Würdest du uns auch gleich verraten was du vorhast oder sogar ein beispielscript posten mit deinen Versuchen würde es um einiges leichter werden.
#include<IE.au3>
$ie = _IECreate("http://www.google.de", 0, 1, 1)
$oldurl = _IEPropertyGet($ie, "locationurl")
While 1
$newurl = _IEPropertyGet($ie, "locationurl")
If @error Then Exit
If $newurl <> $oldurl Then MsgBox(0, "", "User hat die Seite geändert")
$oldurl = $newurl
Sleep(100)
WEnd
Try this
Die schleife läuft ja auch nur einmal durch sie startet bei 0 am ende wird plus 1 dazugerechnet deine abbruchbedingung ist aber "loope" wenn $i kleiner 1 ist nach einem durchlauf ist $i aber schon eins und somit --> abbruch