1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. XovoxKingdom

Beiträge von XovoxKingdom

  • Uhrzeit für Inputfeld

    • XovoxKingdom
    • 22. Juli 2009 um 11:01

    Hi,
    Ich möchte eine GUI erstellen in der man in einem Inputfeld die Uhrzeit eintragen kann.
    Bedingungen:
    1. Man darf NUR gültige ZAHLEN eintragen können
    2. Es muss automatisch nach der 2. eingabe ein ":" gesetzt werden z.b. man gibt 1205 ein und der inputtext wird zu 12:05
    ABER: wenn man z.b die eingabe löscht und dann soll aus "12:" "1" werden (bei 1maligem betätigen der Löschentaste)

    Mein ansatz funktioniert nicht wirklich :S

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    $Frm = GUICreate("Input Filter", 300, 30, -1, -1)
    Global $INPUT = GUICtrlCreateInput("", 5, 5, 290,21,0x2000)
    ; to select a specific default format
    $DTM_SETFORMAT_ = 0x1032
    $style = "hh:nn"
    GUICtrlSendMsg($INPUT, $DTM_SETFORMAT_, 0, $style)
    GUISetState(@SW_SHOW)
    While GUIGetMsg() <> $GUI_EVENT_CLOSE
    $read=GUICtrlRead($INPUT)
    If StringLen($read)=2 And IsNumber(Int(StringMid($read,2,1)))=True then
    GUICtrlSetData($INPUT,GUICtrlRead($INPUT)&":")
    EndIf
    If StringInStr(StringLeft($read,2),":")=True Then
    GUICtrlSetData($INPUT,StringTrimRight($INPUT,1))
    EndIf
    WEnd
    MsgBox(0, "Time", GUICtrlRead($INPUT))

    [/autoit]


    ich hoffe man versteht worauf ich hinauswill ^^

  • Lösung gesucht: wie sämtliche Dateitypen starten?

    • XovoxKingdom
    • 22. Juli 2009 um 09:44

    Ich hab dir mal nen Beispiel gemacht (bei mehreren dateiendungen würde ich Switch case DATEIENDUNG1 ... case DATEIENDUNG2 ...etc... Endswitch empfehlen)

    Beispiel für .exe:

    [autoit]

    ; 2 Methoden sind möglich (wobei methode 2 warscheinlich länger dauert und vom prinzip gleich ist, aber durch isarray schonmal "falsche" eingaben wegfallen lässt)

    [/autoit][autoit][/autoit][autoit]

    ;Methode 1:
    $dPfad = "C:\Users\USERNAME\Desktop\Sudoku.exe"
    If StringUpper(StringRight($dPfad, 4)) = StringUpper(".exe") Then
    ShellExecute($dPfad)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    ;Methode 2:
    #include <string.au3>
    $dPfad = "C:\Users\USERNAME\Desktop\Sudoku.exe"
    $sSplit = StringSplit($dPfad, "\")
    If IsArray($sSplit) = True Then
    If StringUpper(StringRight($sSplit[$sSplit[0]], 4)) = StringUpper(".exe") Then
    ShellExecute($dPfad)
    EndIf
    EndIf

    [/autoit]


    PS: eigentlich sollte per Shellexecute immer das standard programm gewählt werden

  • GUI Fenster schliest

    • XovoxKingdom
    • 20. Juli 2009 um 20:13

    Hi,
    ich hab mir deine includes nochmal angeguckt, also:
    Du hast Variablen in Funktionen benutzt die NICHT deklariert waren,
    jetzt ergeben sich 2 Möglichkeiten:
    1. Du lässt die Funktion mit Parametern laufen

    [autoit]

    ;Beispielfunktion mit Paramtern
    Func Beispielfunktion($Variable1,$Variable2=1)
    ; Die $Variable1 MUSS initialisiert werden,
    ; $Variable2 KANN initialisiert werden , wenn nicht wird ihr der Wert 1 zugewiesen
    MsgBox(0,"Variablen:",$Variable1&" : "&$Variable2)
    Endfunc
    ;Der Aufruf der Funktionen geht wie folgt:
    Beispielfunktion(12345)
    Beispielfunktion(12345,54321)

    [/autoit]


    2.Möglichkeit (würde ich meistens von abraten) ist, dass du die "fehlenden" variablen
    als GLOBAL deklarierst und durch die Funktionen dadrauf zugreifst

    Dein nächster Fehler (in der window.au3) war der fehlende "#include" befehl für die UDFs.
    (Du kannst die Funktionen natürlich auch per Hand einfügen :rolleyes: )

    Ich hoffe ich habe nichts übersehen :S und konnte alles "relativ" klar rüberbringen :D

  • GUI Fenster schliest

    • XovoxKingdom
    • 19. Juli 2009 um 19:56

    hi,
    also zu deinem "GUI-Problem":

    [autoit]

    GUISetState(@SW_SHOW); Macht die GUI sichtbar (hattest du offenbahr schon)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1 ;eine schleife (die DERZEIT nur auf den Schließen-Befehl mit Exit (=Beenden) reagiert) muss gesetzt werden damit die GUI angezeigt wird
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]


    PS: ein simples sleep(5000) würde die GUI 5 Sekunden anzeigen, würde aber keine reaktion auf den Schließen-Befehl , ist manchmal ganz hilfreich um die GUI anzugucken.. Sonst kann ich dir nur den KODA empfehlen mit dem man ziemlich schnell GUI's zaubern kann (Autoitverzeichnis\Scite\Koda\FD.exe)

  • Koda, Quelltext auf die Button legen

    • XovoxKingdom
    • 14. Juli 2009 um 15:48

    Du musst einfach den Code generieren lassen (rechts neben dem speicher symbol) bzw. F9,
    oder einfach F10
    so wie Alina es beschrieben hat kannste den Code dann an die spezielle Stelle einfügen.

  • Button in eine fremde GUI einfügen

    • XovoxKingdom
    • 12. Juli 2009 um 12:14

    Danke für deine Mühe :D
    das ist genau das was ich wollte :thumbup:

  • Button in eine fremde GUI einfügen

    • XovoxKingdom
    • 11. Juli 2009 um 21:21

    Moinsen,
    Ich habe folgendes Problem:
    Ich möchte einen Button (mit der _guictrlbutton_create() Funktion) in einer anderen GUI erstellen...
    Z.b. im Internet Explorer, und der Button soll natürlich über eine (oder mehrere) Funktionen verfügen.

    Das Erstellen des Buttons in einer fremden (<-nur dadrum gehts) Gui funktioniert wunderbar,
    nur leider das "gewohnte" belegen mit einer Funktion scheint nicht so richtig zu funktionieren ;(

    PS: Ich denke mein Vorhaben ist klar :P (falls Code benötigt wird tippe ich den noch ;) )

  • Text auslesen und dann anwenden

    • XovoxKingdom
    • 25. Juni 2009 um 20:42

    lies dir bitte die Forenregeln durch
    BOTS WERDEN NICHT UNTERSTÜTZT
    [ ] nicht closen
    [x] bitte closen

  • Eine Zeile aus Textdatei löschen

    • XovoxKingdom
    • 25. Juni 2009 um 17:36

    soo.. hatte grad etwas Zeit und habs mal umgesetzt mit Kommentaren:

    Spoiler anzeigen
    [autoit]

    $file = "" ; der dateiname der textdatei
    $removetext = "" ; der text (die zeile) die ersetzt werden soll
    $anzahl = 1 ; die anzahl wie oft der text gelöscht werden soll (falls doppeleinträge)

    [/autoit] [autoit][/autoit] [autoit]

    $openf = FileOpen($file, 16) ; öffnet die datei im Binary modus
    $read = FileRead($openf) ; liest die datei aus (immernoch binary)
    FileClose($openf) ; schliest die datei (... binary)
    $new = StringReplace($read, StringTrimLeft(Binary($removetext), 2) & StringTrimLeft(Binary(@CRLF), 2), "", $anzahl)
    ; hier wird aus der binary der zeilenumbruch und der text ersetzt

    [/autoit] [autoit][/autoit] [autoit]

    $openfnew = FileOpen($file, 2) ; hier wird die datei "normal" geöffnet, jedoch wird der inhalt überschrieben
    FileWrite($openfnew, BinaryToString($new)) ; hier wird der ehemals binary text in einem string in die datei geschrieben
    FileClose($openfnew) ; hier schließen wir die "richtige" datei
    Run("explorer.exe " & @ScriptDir & "\" & $file) ; hiermit kann die datei geöffnet werden

    [/autoit]

    es geht bestimmt auch einfacher.. aber so klappts auch ;)

  • Etwas tun wenn der PC herunter gefahren wird?

    • XovoxKingdom
    • 25. Juni 2009 um 09:02
    Zitat

    vielleicht hat er ja nur ne XP Home ...

    Oder er hat (wie ich) Vista... damit scheint es auch nicht zu funktionieren, da er die datei nicht findet.
    Vielleicht kann man es nachinstallieren (wie bei XP) :rolleyes:
    Falls ich das irgendwann nachinstalliert habe (oder einfach wieder XP draufmache...) hab ich gleich dazu ne Frage:
    Kann man die Eintragungen auch direkt per Autoit machen? (ohne die GUI von gpedit.msc zu öffnen)
    [Nein, falls einer denken sollte, ich wollte einen virus etc. machen der wandelt auf dem Irrpfad :rofl: ]

  • Pixel Search problem

    • XovoxKingdom
    • 22. Juni 2009 um 16:56

    Wenn du das Script von dir:

    Spoiler anzeigen


    Von Tristan

    Zitat
    [autoit]

    $pixel1 = PixelGetColor (596, 325)
    $pixel2 = PixelGetColor (600, 325)
    $pixel3 = PixelGetColor (584, 334)
    $farbe1 = 0xFFD200

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    If Hex($pixel1, 6) = $farbe1 And Hex($pixel2, 6) = $farbe1 And Hex($pixel3, 6) = $farbe1 Then
    ControlSend("WordPad", "", 0, "{5}")
    Sleep (6000)
    EndIf
    Wend

    [/autoit]
    Alles anzeigen


    einfach mit einer Fehlermeldung auswirfst (dass er dir alle Farben anzeigt,
    mit allen gesuchten und gefundenen Farben unabhängig ob sie gefunden wurden) :P
    Damit kannste feststellen ob der Pixelgetcolor funktioniert hatte,
    und es möglicherweise an controlsend liegt, dass nichts passiert! ;)

    Zitat

    Die Vergleiche in Zeile 7 müssen == statt = sein. Sonst hält er es für eine Zuweisung.

    Ist das wirklich so? oder nur bei C++ ?

  • Rekursive Datei/Ordner Auflistung

    • XovoxKingdom
    • 20. Juni 2009 um 18:40

    :wacko: das folgende hätte ich nicht erwartet:
    deine UDF findet im windir 59158 Dateien
    Bugfix's Udf hat sogar 70906 Dateien
    gut das ist ja noch nicht soo verwunderlich .. aber DAS:
    Der Scan mit deiner UDF (1 durchgang) 145,27 sekunden
    und der Scan mit Bugfix's UDF 41,46 sekunden
    Es ist aber noch zu sagen, dass zwischen den beiden durchläufen
    KEIN sleep war und ich mit deiner UDF angefangen habe.
    (Spielt das irgendeine Rolle?)
    PS: Ich habe bei beiden nur einen Durchlauf gemacht

  • Rekursive Datei/Ordner Auflistung

    • XovoxKingdom
    • 20. Juni 2009 um 18:22

    das ist mein code:

    Spoiler anzeigen
    [autoit]


    $zeit1 = 0
    $zeit2 = 0
    For $i = 1 To 5
    Sleep(1000)
    $t = TimerInit()
    $2 = _ordner_rekursiv(@DesktopDir)
    $s = TimerDiff($t)
    $zeit1 = $zeit1 + $s / 1000
    Next
    MsgBox(0, "Zeit", $zeit1 / 5) ;3,8597

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To 5
    Sleep(1000)
    $t = TimerInit()
    $1 = _GetFilesFolder_Rekursiv(@DesktopDir)
    $s = TimerDiff($t)
    $zeit2 = $zeit2 + $s / 1000
    Next
    MsgBox(0, "Zeit", $zeit2/5); 5,4076

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($2); 7089
    _ArrayDisplay($1); 7281

    [/autoit]
  • Rekursive Datei/Ordner Auflistung

    • XovoxKingdom
    • 20. Juni 2009 um 18:01

    Wow, nicht schlecht ^^
    ist wirklich ein stückchen schneller (1 sekunde bei 7000 dateien)
    ABER:
    Warum habe ich bei dem Scan mit deiner UDF
    7098 dateien und bei dem Scan mit der UDF von Bugfix
    7281 dateien ?
    wo sind die verbliebenen?^^ (hab nur standard werte benutzt und als dir den desktop angegeben - bei beiden udfs)

  • Alle Werte von einem zweidimensonalen Array mit allen Werten eines eindimensionalen Arrays vergleichen

    • XovoxKingdom
    • 19. Juni 2009 um 16:03

    hi,
    also ich würde dir sofort die Funktion _ArraySearch vorschlagen (guck am besten in der Hilfedatei & vielleicht auch das Beispiel sowie die Rückgabe werte an)
    Damit kannst du dir sicherlich einige Zeilen Code sparen und es ziemlich einfach coden :D
    EDIT: es kann doch net sein oda? IMMER bin ich zu langsam wenn 2 zur gleichen Zeit antworten :P

  • ini datei auslesen

    • XovoxKingdom
    • 18. Juni 2009 um 15:31

    hi,
    ja zu deinem Problem .. genau kann ich dazu nix sagen, da du uns/mir keinen quellcode präsentierst :S
    dennoch würde ich dein Problem einfach mit einem Array lösen (alle Seiten eintragen und per _arraysearch() die aktuelle seite überprüfen)!

    Vielleicht schickst du einfach sonst nochmal deinen bisherigen Code ;)
    (PS: bitte in einem AutoIT-Quellcode format und ggf. mit Spoiler :D )

  • Koordinaten im Fenster ?

    • XovoxKingdom
    • 14. Juni 2009 um 19:27

    um nochmal konkret auf dein Problem einzugehen
    (wie ich in der Shoutbox meinte funzt die Einstellung mit opt: ) :)

    [autoit]


    opt("PixelCoordMode",0)
    $X=0
    $Y=0
    ;WinActivate("Name des Fensters")
    ;WinWaitActive("Name des Fensters")
    ;Du musst nurnoch den Bereich der angeklickt werden soll aktivieren
    ControlClick(WinGetTitle(""),WinGetText(WinGetTitle("")),"","Left",1,$X, $Y)

    [/autoit]


    PS: die Umsetzung mit dem controlclick ist jedoch beim Browser fehleranfällig, guck dir die IE.au3 an ^^

  • Ist es möglich zwei buchstaben miteinander Auszutauschen?

    • XovoxKingdom
    • 14. Juni 2009 um 19:05

    hi,
    ja in der tat das ist sehr einfach ^^
    schau dir den Befehl :

    [autoit]

    StringReplace

    [/autoit]


    an (bei problemen sollte die AutoIT hilfe dich unterstützen ;))
    EDIT: .. irgendwie bin ich immer ein stückchen zu langsam :whistling:

  • Bei Vollbild GUI Zugriff auf dahinter liegende Fenster?

    • XovoxKingdom
    • 13. Juni 2009 um 14:57

    Mit deiner "send" Methode wirst du warscheinlich keinen Erfolg haben, da es ja nur möglich ist 1 aktives Fenster zu haben.
    Wenn die GUI nun im Vordergrund ist und die Installation überdeckt, dann kannste nurnoch mit Controlsend arbeiten.
    Hierbei würde ich dir aber gleich Controlclick empfehlen, da du die Buttons ja sowieso anklicken musst ^^
    Während des Controlclicks muss das Fenster nicht aktiv sein und kann sogar minimiert arbeiten.
    Nimm am besten das AutoIt Info tool dafür, dann bekommste die nötigen Informationen.
    (In der Hilfedatei ist auch ein Tutorial :D )

  • schleife bis Buttonklicka usführen

    • XovoxKingdom
    • 12. Juni 2009 um 17:56

    soo, dann fange ich mal an ^^
    den Button kannste mit

    [autoit]

    Guictrlsetdata($but_start,"Beenden")

    [/autoit]


    umbenennen,
    mit der Funktion

    [autoit]

    $Zeit=TimerInit() ; Startet einen Timer
    $AktuelleZeit=Round(TimerDiff($Zeit),0)/1000; Gibt den gerundeten Zeitwert des Timers in Sekunden an

    [/autoit]


    kannst du die 15 sekunden bestimmen (am besten in einer While Schleife)
    bei dem abbrechen (alias "Beenden") des scripts fällt mir grad nix ein, da er in der schleife nicht auf den Buttonklick
    reagieren wird...
    ich hoffe ich konnte wenigstens ein bisschen helfen :rolleyes:

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™