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

  • Binär und Binärstrings

    • XovoxKingdom
    • 16. April 2010 um 15:23

    Meine voherige Version hat nur Hex-Ziffern umgewandelt (0-9 A-F)..

    die jetzige sollte das gewünschte können:

    Spoiler anzeigen
    [autoit]

    Func BinaryConvert($in, $mode = 1)
    Local $b, $result, $max = StringLen($in) / 8 - 1
    Switch $mode
    Case 1
    For $x = 1 To StringLen($in)
    $a = Asc(StringMid($in, $x, 1))
    For $i = 7 To 0 Step -1
    If Mod($a, 2 ^ $i) < $a Then
    $b &= 1
    $a -= 2 ^ $i
    Else
    $b &= 0
    EndIf
    Next
    Next
    Return $b
    Case 2
    For $x = 0 To $max
    $a = StringMid($in, $x * 8 + 1, 8)
    $b = 0
    For $i = 7 To 0 Step -1
    If StringMid($a, 8 - $i, 1) = "1" Then $b += 2 ^ $i
    Next
    $result &= Chr($b)
    Next
    Return $result
    EndSwitch
    EndFunc ;==>BinaryConvert by XovoxKingdom
    MsgBox(0, BinaryConvert("01000001010000100100001001000001", 2), BinaryConvert("ABBA"));Beispiel

    [/autoit]
  • PixelSearch - erst reagieren wenn Fläche 4x6 Pixel ist?

    • XovoxKingdom
    • 16. April 2010 um 11:02

    2 Möglichkeiten fallen mir ein:
    "Bessere" Möglichkeit: Such nach ImageSearch.au3, da es genau das macht was du willst! (gibts unter anderem bei youtube auch tutorials zu)
    "Schlechtere" Möglichkeit: lass dir den Pixel zurückgeben und prüfe mit Pixelgetcolor die umliegenden.

  • Binär und Binärstrings

    • XovoxKingdom
    • 15. April 2010 um 23:19

    Ich hab auch etwas vorbereitet ^^ (meine Variante ist kürzer, aber ob sie schneller ist weiss ich nicht)

    Spoiler anzeigen
    [autoit]

    Func BinaryConvert($in, $mode = 1)
    Local $n[4] = [0, 0, 0, 0], $asc = 0
    Switch $mode
    Case 1
    $asc = Asc($in) - 48
    If $asc > 9 Then $asc -= 7
    For $i = 3 To 0 Step -1
    If Not (2 ^ $i > $asc) Then
    $asc -= 2 ^ $i
    $n[$i] = 1
    EndIf
    Next
    Return $n[3] & $n[2] & $n[1] & $n[0]
    Case 2
    $in = StringSplit($in, "", 2)
    For $i = 0 To 3
    If $in[$i] = 1 Then $asc += 2 ^ (3 - $i)
    Next
    If $asc > 9 Then Return Chr($asc + 55)
    Return $asc
    EndSwitch
    EndFunc ;==>BinaryConvert (HEX-Ziffern) by XovoxKingdom

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

    MsgBox(0, BinaryConvert("1010", 2), BinaryConvert("A"))

    [/autoit]


    EDIT: Soo.. jetzt stimmt auch die Formatierung :D

  • "F9" an mehrere Firefox Fenster senden?

    • XovoxKingdom
    • 15. April 2010 um 18:19

    Hier ist ein Beispiel mit dem "alle" Firefox angesprochen werden können.
    (ggf. muss es angepasst werden, falls mehrere Fenster "Mozilla" enthalten, oder ähnliches)

    Spoiler anzeigen
    [autoit]

    Opt("wintitlematchmode",2)
    $var=WinList("Mozilla"); alle Fenster mit "Mozilla" im Titel werden aufgelistet
    For $i = 1 to $var[0][0]
    ; Es werden nur die sichtbaren Fenster angezeigt
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    WinActivate($var[$i][1])
    WinWaitActive($var[$i][1])
    MsgBox(0, "Details", "Title=" & $var[$i][0] & @LF & "Handle=" & $var[$i][1],5)
    ControlSend($var[$i][1],"","MozillaWindowClass2","{F5}"); sendet F5 (Aktualisieren)
    Sleep(1000)
    MsgBox(0,"Info","F5 wurde gesendet",1)
    EndIf
    Next

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

    MsgBox(0,"Abgeschlossen","Alle Fenster wurden aufgerufen!",5)

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

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]
  • "F9" an mehrere Firefox Fenster senden?

    • XovoxKingdom
    • 15. April 2010 um 17:35

    Der erste Parameter von Controlsend muss einfach mit dem jeweiligen Fensterhandle übergeben werden.
    Den bekommst du mit Wingethandle() heraus. Falls du die FF.au3 benutzt, dann guck in die zugehörige
    Hilfedatei, denn dafür gibt es eine Funktion.
    PS: Ich würde dir sowieso empfehlen mit der FF.au3 zu arbeiten, sofern du mehrere Aktionen automatisieren willst.

  • Geschwindigkeit von scripten

    • XovoxKingdom
    • 14. April 2010 um 15:23
    Zitat

    ich denke mal, dass der größte unteschied zwischen skript- und programmiersprache die art der kompilierung ist.
    programmiersprachen werden direkt in bytecode oder maschinencode umgewandelt und skriptsprachen müssen zur laufzeit noch durch den interpreter.
    verbessert mich, wenn ich falsch liege^^


    Ich denke, dass diese Definition nicht ganz korrekt ist, da man JAVA sonst auch in die Scriptsprachengruppierung fassen müsste.

  • TCP: Alles angekommen?

    • XovoxKingdom
    • 14. April 2010 um 09:18

    Du könntest die Nachricht/Daten erstmal hashen und dann nach dem hoffentlich
    vollständigen Übertragen den gesendeten Hash mit einem vom Server erstellten Hash
    vergleichen. Vielleicht gibt es speziell zum versenden noch (mir unbekannte) Methoden.
    Mit dem Hash sollte es jedenfalls klappen (sofern der richtig übermittelt wird :D )!

    EDIT: Du kannst auch eine eigene Syntax erstellen die den Anfang des Sendens und das
    Ende beschreibt z.B.: <Datei> | Absenden | dann den Dateiinhalt | Absenden | dann </Datei> | Absenden
    d.h. wenn der Server <Datei> empfängt und nach einiger weile </Datei> gesendet bekommt, dann "weiss" er,
    dass die Datei übermittelt wurde. Anschließend kannst du den Hash machen.

  • Kleiner Bug im Forum?

    • XovoxKingdom
    • 14. April 2010 um 09:14

    Hi,
    ich habe heute einen Bug im Forum entdeckt.
    Er ist nicht sonderbar schlimm, aber er ist da ;)
    Vielleicht ist er manchen bereits früher aufgefallen, mir aber erst heute:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Wie ihr am Bild erkennen könnt, ist bei der Liste der Themabetrachter der Name
    "UEZ" doppelt. Da sie die selbe ID haben/hatten gehe ich von einem "Fehler" aus.

    Vielleicht lässt er sich fixen oder ist sowieso irrelevant. :whistling:

    Dateien

    .jpg 995,89 kB – 0 Downloads
  • ToolTIP

    • XovoxKingdom
    • 12. April 2010 um 15:40

    Probier mal das hier:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 308, 163, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 72, 56, 129, 41, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    $p=GUIGetCursorInfo()
    If $p[0] >71 And $p[0] < 201 And $p[1] > 55 And $p[1] < 98 Then
    ToolTip("Auf dem Button!")
    Sleep(10)
    Else
    ToolTip("NICHT uf dem Button!")
    Sleep(10)
    EndIf
    WEnd

    [/autoit]


    Du kannst die Überprüfung auch via Adlibregister auslagern (sofern du die aktuelle AutoIt version hast)

  • 4 whiles gleichzeitig

    • XovoxKingdom
    • 12. April 2010 um 15:29

    Ineinander verschachteln ist kein Problem, aber ich bezweifle, dass das den gewünschten Erfolg bringt :huh: .
    Ich schätze, dass die mit Adlibregister (falls diese Funktion nicht existiert -> Update deine AutoIt version)
    dein Problem zu lösen ist.
    Sollte es nicht helfen, dann wäre es besser wenn du den Code postest!

  • cmd Fenster auslesen

    • XovoxKingdom
    • 12. April 2010 um 11:28

    Wenn du es mit StdoutRead ausgelesen hast, dann solltest du den kompletten Text haben (unten $String genannt).
    Zum Filtern hab ich folgende Funktion geschrieben:

    Spoiler anzeigen
    [autoit]

    $String = "Microsoft Windows XP [Version 5.1.2600]"& _
    @CRLF&"(C) Copyright 1985-2001 Microsoft Corp."& _
    @CRLF&""& _
    @CRLF&"C:\Dokumente und Einstellungen\BENUTZERNAME\Eigene Dateien\Tomtom\Tomtom Aktivator>Key.ex"& _
    @CRLF&"e Western_and_Central_Europe.mid"& _
    @CRLF&"'Primary' map"& _
    @CRLF&"Enter Device ID:GTHSA ASDFA"& _
    @CRLF&"Activation code (Palm/Pocket): H48C3 B6UMA MS8W2"& _
    @CRLF&"Activation code (One/Go): 62G3X N2GHB SRJW8"& _
    @CRLF&""& _
    @CRLF&"C:\Dokumente und Einstellungen\BENUTZERNAME\Eigene Dateien\Tomtom\TomTom>"
    $Activationcode1 = StringRegExp($String,"\(Palm/Pocket\):\s+([0-9A-Z]+)\s([0-9A-Z]+)\s([0-9A-Z]+)",3)
    $Code1 = $Activationcode1[0]&" "&$Activationcode1[1]&" "&$Activationcode1[2]
    $Activationcode2 = StringRegExp($String,"\(One/Go\):\s+([0-9A-Z]+)\s([0-9A-Z]+)\s([0-9A-Z]+)",3)
    $Code2 = $Activationcode2[0]&" "&$Activationcode2[1]&" "&$Activationcode2[2]

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

    MsgBox(0,"Ausgelesener Text via CMD",$String)
    MsgBox(0,"Herausgefilterter Activation code: Palm/Pocket",$Code1)
    MsgBox(0,"Herausgefilterter Activation code: One/Go",$Code2)

    [/autoit]

    PS: Falls du nicht genau weißt wie StdoutRead funktioniert, dann guck in die Hilfe oder in den Link von AutoBert ;)

  • Zeit umrechner

    • XovoxKingdom
    • 11. April 2010 um 20:54

    Soooo... ich hab da mal ein paar Sachen vorbereitet:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    #include <date.au3>

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

    $Datum1 = _NowCalc()
    $Datum2 = _NowCalc()
    $Datum2 = _DateAdd("s",100,$Datum2)
    $Temp = $Datum2
    $Tage = _DateDiff("D",$Datum1,$Temp)
    $Temp = _DateAdd("D",$Tage*(-1),$Temp)
    $Stunden = _DateDiff("h",$Datum1,$Temp)
    $Temp = _DateAdd("h",$Stunden*(-1),$Temp)
    $Minuten = _DateDiff("n",$Datum1,$Temp)
    $Temp = _DateAdd("n",$Minuten*(-1),$Temp)
    $Sekunden = _DateDiff("s",$Datum1,$Temp)
    $Temp = _DateAdd("s",$Sekunden*(-1),$Temp)
    MsgBox(0,"Datumvergleich","Datum1: "&$Datum1&@CRLF&"Datum2: "&$Datum2&@CRLF&"Tage: "&$Tage&@CRLF&"Stunden: "&$Stunden&@CRLF&"Minuten: "&$Minuten&@CRLF&"Sekunden: "&$Sekunden)

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

    ;Datumsformat: JJJJ/MM/DD HH/MM/SS

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

    Func ConvertDdate($Datum); Funktion zum umwandeln in das amerikanische Datum:
    $Reg = StringRegExp($Datum,"(\d{2})\.(\d{2})\.(\d{4})\s(\d{2}):(\d{2}):(\d{2})",3)
    Return $Reg[2]&"/"&$Reg[1]&"/"&$Reg[0]&" "&$Reg[3]&":"&$Reg[4]&":"&$Reg[5]
    EndFunc

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

    Func ConvertAdate($Datum); Funktion zum umwandeln in das deutsche Datum:
    $Reg = StringRegExp($Datum,"(\d{4})/(\d{2})/(\d{2})\s(\d{2}):(\d{2}):(\d{2})",3)
    Return $Reg[2]&"."&$Reg[1]&"."&$Reg[0]&" "&$Reg[3]&":"&$Reg[4]&":"&$Reg[5]
    EndFunc

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

    ; Beispiel:
    $Amerikanisch = _NowCalc()
    MsgBox(0,"Beispiel: Datumswandel1","Amerikanisches Datum: "&$Amerikanisch)
    $Deutsch = ConvertAdate($Amerikanisch)
    MsgBox(0,"Beispiel: Datumswandel2","Deutsches Datum: "&$Deutsch)
    $WiederAmerikanisch = ConvertDdate($Deutsch)
    MsgBox(0,"Beispiel: Datumswandel3","Wieder das Amerikanische Datum: "&$WiederAmerikanisch)

    [/autoit]


    Guck dir die Beispiele genau an.. und vergiss nicht VOR dem benutzen von _Datediff das AMERIKANISCHE Datum zu benutzen (Umwandlungsfunktionen + Beispiele liegen bei)

  • Gibt es ein befehl für Rückgängig und alles markieren?

    • XovoxKingdom
    • 11. April 2010 um 18:31

    mit send("^a") sendest du Strg+a
    mit send("{^}") sendest du ^

    du kannst auch controlsend benutzen
    bzw. um das strg+a, strg+c (um einen Text zu kopieren)
    kannst du bei Standardcontrols auch Controlgettext benutzen!

  • Zeit umrechner

    • XovoxKingdom
    • 11. April 2010 um 16:19

    Ich hab da mal was vorbereitet:

    Spoiler anzeigen
    [autoit]

    Func GetTimeDiff($Zeit1,$Zeit2)
    Dim $Diff[3]
    Local $a, $b
    $a = StringReplace($Zeit1,":","")
    $b = StringReplace($Zeit2,":","")
    Select
    Case $a = $b
    For $i=0 To 2
    $Diff[$i] = 0
    Next
    Case $a > $b
    $Diff[0] = 1
    $Diff[1] = StringLeft($a,2) - StringLeft($b,2)
    $Diff[2] = StringRight($a,2) - StringRight($b,2)
    If StringRight($a,2) < StringRight($b,2) Then;Diese Zeile hab ich irgendwie unterschlagen - strg x statt strg c :P
    $Diff[1] -= 1
    $Diff[2] += 60
    EndIf

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

    Case $a < $b
    $Diff[0] = -1
    $Diff[1] = StringLeft($b,2) - StringLeft($a,2)
    $Diff[2] = StringRight($b,2) - StringRight($a,2)
    If StringRight($b,2) < StringRight($a,2) Then
    $Diff[1] -= 1
    $Diff[2] += 60
    EndIf

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

    EndSelect
    Return $Diff
    EndFunc

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

    $a=GetTimeDiff("20:10","12:25")
    Switch $a[0]
    Case 0
    MsgBox(0,"Uhrzeitdiff","Beide Zeiten sind gleich!")
    Case 1
    MsgBox(0,"Uhrzeitdiff","Zeit 1 ist später, undzwar genau: "&$a[1]&" Stunde(n) und "&$a[2]&" Minute(n)!")
    Case -1
    MsgBox(0,"Uhrzeitdiff","Zeit 1 ist früher, undzwar genau: "&$a[1]&" Stunde(n) und "&$a[2]&" Minute(n)!")
    EndSwitch

    [/autoit]


    Es wird ein Array zurückgegeben mit folgender Struktur:
    Array[0] = 1 (Zeit 1 ist später), -1 (Zeit 1 ist früher) , 0 (Zeit 1 und Zeit 2 sind gleich)
    Array[1] = Differenz in Stunden
    Array[2] = Differenz in Minuten

    Viel Spaß damit :D
    PS: Falls du mehr Angaben überprüfen musst (z.B. Datum), dann würde ich auf die _DateDiff() Funktion hinweisen (siehe Hilfedatei -> F1 in Scite)

    EDIT: Danke für den Hinweis.. ist mir bei Copy&Paste passiert.. statt strg+c strg+x gedrückt :whistling:

  • Easy CD-DA Extractor (Hauptfenster nach der Installation schliessen)

    • XovoxKingdom
    • 11. April 2010 um 14:50

    Probiere mal das folgende Script nachdem du das Programm gestartet hast (so, dass das "unangenehme" Fenster offen ist)
    Die MsgBoxen zwischendurch helfen dir, da sie ansagen welche Aktion ausgeführt wurde.
    D.h. du musst, nachdem das Fenster geschlossen wurde, dir nur merken welche Technik dafür verantwortlich war!

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    Opt("Wintitlematchmode",2)
    $Title = WinGetTitle("Easy CD-DA")
    $Handle = WinGetHandle($Title)
    $Prozess = WinGetProcess($Title)
    If StringInStr($Title,"Mozilla") Then
    MsgBox(0,"ERROR!","Firefox ist noch offen mit einem ähnlichen Titel.. bitte schließen!")
    Exit
    EndIf
    MsgBox(0,"Fensterinfo","Titel : "&$Title&@CRLF&"Handle : "&$Handle&@CRLF&"Prozess : "&$Prozess)
    MsgBox(0,"Testphase","Wenn das sich gleich bewegende Fenster das Gesuchte ist, dann müsste es funktionieren")
    WinMove($Title,"",0,0,600,600,100)
    Sleep(1000)
    WinClose($Title)
    MsgBox(0,"Kontrolle","Das war nun Winclose.. hat es funktioniert?")
    WinKill($Title)
    MsgBox(0,"Kontrolle","Das war nun Winkill.. hat es funktioniert?")
    For $i=1 To 10
    If ProcessExists($Prozess) = True Then
    ProcessClose($Prozess)
    Else
    ExitLoop
    EndIf
    Sleep(100)
    Next
    MsgBox(0,"Kontrolle","Das war nun Processclose.. hat es funktioniert?")
    If ProcessExists($Prozess) = True Then
    MsgBox(0,"Error!","Prozess existiert noch")
    Else
    MsgBox(0,"Erfolg!","Prozess wurde geschlossen!")
    EndIf

    [/autoit]
  • Easy CD-DA Extractor (Hauptfenster nach der Installation schliessen)

    • XovoxKingdom
    • 11. April 2010 um 11:08

    Existiert nach dem Installieren der Prozess "Setup.exe" (also der Installer)
    oder "nur" das Programm.
    Falls das Programm laufen würde, dann musst du es wahrscheinlich mit
    der Prozessclose Funktion probieren, indem du da als Parameter den Programmnamen
    eingibst:

    [autoit]

    Processclose("ezcddax.exe") ; so sollte der Prozess heissen

    [/autoit]


    andernfalls wenn es wirklich der Installer ist:

    [autoit]

    #RequireAdmin;Falls es benötigt wird, um den Prozess zu beenden
    $Prozess = Run("Setup.exe")
    $First = WinWait("Easy CD-DA Extractor Setup","&Weiter >")
    ;... Hier dein kompletter Setupablauf...

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

    Winclose($First);ggf. Winkill
    ProcessClose($Prozess)

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

    EDIT: Bei der Demo wird das Programm garnicht gestartet (darum geht es ja oder?)

  • Easy CD-DA Extractor (Hauptfenster nach der Installation schliessen)

    • XovoxKingdom
    • 11. April 2010 um 10:04

    Das Problem ist jetzt gelöst, oder?
    Falls es Schwierigkeiten mit dem Adressieren geben sollte gibt es (u.a.) folgende Möglichkeiten:
    1. Du holst dir den Fenstertitel mit:

    [autoit]

    $Title = Wingettitle("Easy CD-DA")
    Winclose($Title)
    Winkill($Title);falls Winclose es nicht schließen sollte

    [/autoit]

    2. Du schließt direkt den Prozess:

    [autoit]

    Processclose("Prozess.exe")

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

    ;oder

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

    $Title = Wingettitle("Easy CD-DA")
    $Prozess = WingetProcess($Title)
    Processclose($Prozess)

    [/autoit]
  • Easy CD-DA Extractor (Hauptfenster nach der Installation schliessen)

    • XovoxKingdom
    • 11. April 2010 um 09:47

    Ich habe mir eben die Demo heruntergeladen, aber da ist die Setuproutine wohl etwas anders...
    Welches Fenster willst du denn geschlossen haben? Das allereste?
    Falls ja, dann versuch diesen Ansatz:

    [autoit]

    ShellExecute("Setup.exe")
    $First = WinWait("Easy CD-DA Extractor Setup","&Weiter >")
    ;... Hier dein kompletter Setupablauf...

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

    Winclose($First)

    [/autoit]
  • C++ DLL Array mit AutoIt nutzen

    • XovoxKingdom
    • 10. April 2010 um 18:27

    Ist das in irgendeinerweise "schädlich" :huh: ?
    Wahrscheinlich nur wenn man globale Variablen mit dem jeweiligen Datentyp deklariert, oder?
    Wo ist die Definition denn am besten?
    (ich vermute mal direkt nach der Implementierung der Includes!?)

    PS: Danke für den Einwand. Dann hab ich wohl wieder etwas gelernt :thumbup:

  • C++ DLL Array mit AutoIt nutzen

    • XovoxKingdom
    • 10. April 2010 um 16:39

    Hey danke Progandy !
    Nun kann ich endlich weitertüfteln, damit ich viele Rechnungen in eine DLL kombinieren kann!
    :thumbup: :thumbup: :thumbup:

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™