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. alpines

Beiträge von alpines

  • Quelltext auslesen

    • alpines
    • 7. April 2018 um 18:35

    Für das Feedback wird auf https://www.amazon.de/sp/ajax/feedback gePOSTet.
    Dabei ist der Post-Body seller=A2NV2XI767Y763&marketplaceID=A1PA6795UKMFR9&pageNumber=0.

    Mit WinHttp etwa so lösbar (Anhang mit UDF):

    AutoIt
    #include <WinHttp.au3>
    
    Global Const $S_SELLER = "A2NV2XI767Y763"
    Global Const $S_MARKETPLACE_ID = "A1PA6795UKMFR9"
    Global Const $I_PAGENUMBER = 0
    
    $hSession = _WinHttpOpen()
    $hConnect = _WinHttpConnect($hSession, "www.amazon.de", 443)
    
    $sPost = _WinHttpSimpleSSLRequest($hConnect, "POST", "sp/ajax/feedback", Default, "seller=" & $S_SELLER & "&marketplaceID=" & $S_MARKETPLACE_ID & "&pageNumber=" & $I_PAGENUMBER)
    
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    
    MsgBox(64, "Post Response", $sPost)
    Alles anzeigen

    Dateien

    whttp.zip 28,15 kB – 479 Downloads
  • Quelltext auslesen

    • alpines
    • 6. April 2018 um 21:12

    Die werden beim Aufruf der Seite ebenfalls per asp als JSON angefordert.

    Die URL ist https://www.asus.com/support/api/product.asmx/GetPDOS?website=de&model=P5Q.

    Damit kriegst du zurück welche Betriebssysteme aufgelistet sind (für das Produkt).

    Code
    supportpdpage({
       "Result":{
          "Obj":[
             {
                "Id":"41",
                "Name":"Windows 8.1 64-bit"
             },
             {
                "Id":"40",
                "Name":"Windows 8.1 32-bit"
             },
             {
                "Id":"35",
                "Name":"Windows 8 32-bit"
             },
             {
                "Id":"36",
                "Name":"Windows 8 64-bit"
             },
             {
                "Id":"29",
                "Name":"Windows 7 32-bit"
             },
             {
                "Id":"30",
                "Name":"Windows 7 64-bit"
             },
             {
                "Id":"24",
                "Name":"Vista 32-bit"
             },
             {
                "Id":"25",
                "Name":"Vista 64-bit"
             },
             {
                "Id":"20",
                "Name":"Windows Server 2003 32-bit"
             },
             {
                "Id":"23",
                "Name":"Windows Server 2003 64-bit"
             },
             {
                "Id":"17",
                "Name":"Windows XP"
             },
             {
                "Id":"22",
                "Name":"Windows XP 64-bit"
             },
             {
                "Id":"4",
                "Name":"Windows Server 2000"
             },
             {
                "Id":"5",
                "Name":"Linux"
             },
             {
                "Id":"10",
                "Name":"DOS"
             },
             {
                "Id":"8",
                "Name":"andere"
             }
          ]
       },
       "Status":"SUCCESS",
       "Message":"SUCCESS"
    })
    Alles anzeigen
  • Fensterpostition beim Minimieren speichern.

    • alpines
    • 6. April 2018 um 11:36

    Ich weiß, hatte bei mir vorher Abs($xPos) < 30000 weil ich das auch bemerkt hatte.

  • Fensterpostition beim Minimieren speichern.

    • alpines
    • 6. April 2018 um 10:00
    Zitat von Bitnugger

    Ermitteln mit _WinAPI_GetWindowPlacement bzw. setzen mit _WinAPI_SetWindowPlacement

    Sehr schöne Funktion! Viel eleganter als mit jedem WM_MOVE die Koordinaten zu speichern und zu prüfen ob sie < -32000 sind (wenn minimiert).

  • Quelltext auslesen

    • alpines
    • 6. April 2018 um 09:15

    Das ist ein Netzwerkprotokollierer der alles aufzeichnet was über die deine Netzwerkkarte läuft, nur für HTTP(s)-Traffic.

    Chrome und IE bieten da z.B. F12 an. Damit öffnet sich der eingebaute Sniffer und man kann Pakete aufzeichnen.

  • Quelltext auslesen

    • alpines
    • 6. April 2018 um 00:21

    Das ganze wurde wohl auf asp.net umgemünzt, aber wenn du den HTTP-Sniffer anschmeißt während du das Betriebssystem auswählst siehst du was dein Browser an die Seite schickt und was zurückkommt.

    Angefragt wird die URL https://www.asus.com/support/api/product.asmx?GetPDDrivers danach kommen die Informationen die du ausgewählt hast als GET-Parameter.

    Einige davon kannst du problemlos weglassen und solltest trotzdem eine Antwort erhalten.

    Das Format ist JSON, da kannst du dir entweder ein rudimentäres Pattern zusammenschreiben oder eine JSON-UDF zum Parsen der Dateien verwenden (AspirinJunkie hat eine gepostet).

    Hier ein kleines Beispielscript mit InetRead:

    osid ist die ID für das jeweilige Betriebssystem, die Enumeration findest du im Quellcode.

    website ist die Sprache in der die Beschreibungen zurückgegeben werden sollen.

    model ist glaube ich selbsterklärend.

    AutoIt
    $sJSON = BinaryToString(InetRead("https://www.asus.com/support/api/product.asmx/GetPDDrivers?osid=30&website=de&model=P5Q"))
    MsgBox(0,0, $sJSON)
  • WinHttp Login funktioniert im Browser aber nicht über AUTOIT

    • alpines
    • 5. April 2018 um 21:22
    Zitat von olfibits

    Vielleicht sollte man das mal in die Forenregeln aufnehmen. Für mich gibt es nichts Schlimmeres als den Extremfall, nur ein unvollständiges Stück Code und eventuell - hier jetzt nicht - noch eine vollkommen uncheckbare Beschreibung hat und versucht, anhand von dem Code den Bug zu reproduzieren um eine Antwort geben zu können und dann fehlt der halbe Code. Toll

    Man muss (leider) vielen Nutzern den Code aus der Nase rausziehen um ihnen zu helfen.

    Selbst wenn wir es in die Forenregeln aufnehmen würden, würde sich nichts ändern, denn die meisten klicken einfach daran vorbei. Bestes Beispiel sind die etlichen Botthreads.

    Aber sowas gehört einfach zum guten Umgangston, wenn man Hilfe fordert sollte man auch alles bereitstellen. Ansonsten braucht man sich nicht wundern, wenn nichts rumkommt.

  • WinHttp Login funktioniert im Browser aber nicht über AUTOIT

    • alpines
    • 5. April 2018 um 21:01

    Das kann unmöglich dein gesamtes Skript sein.

    Was genau willst du denn machen wenn du dich auf YouTube angemeldet hast? Hast du schon mal nachgesehen ob Google dafür eine API anbietet? Dann kannst du dir den ganzen Kram über das HTML-Frontend sparen und direkt über die API dich einloggen.

  • Dieser Post in WinHttp

    • alpines
    • 5. April 2018 um 10:45

    Du gehst die Sache komplett falsch an.

    Du verwendest einen Http-Request auf einen Https-Server, das alleine kann schon so nicht funktionieren.

    _WinHttpSimpleSSLRequest wäre die richtige Funktion.

    Diese lautet im Funktionsheader:

    _WinHttpSimpleSSLRequest($hConnect, $sType = Default, $sPath = Default, $sReferrer = Default, $sDta = Default, $sHeader = Default, $fGetHeaders = Default, $iMode = Default, $sCredName = Default, $sCredPass = Default, $iIgnoreCertErrors = 0)

    Typ ist schon richtig aber dein Pfad darf den vorgegangenen Foreslash nicht enthalten.

    Anschließend folgt der Referer den du auf Default lassen kannst und dann kommt $sDta (sollte wohl $sData heißen).

    Dort packst du den Body deines Post-Requestes rein, also dein JSON-Inhalt.

  • 1D Array in 2D Array schreiben

    • alpines
    • 4. April 2018 um 14:05
    Zitat von Hector

    Das Ergebnis und da habe ich eine nicht ausreichende Information gegeben, ist leider nicht korrekt.

    In $a2DArray brauche ich Strings, und nicht nur Zahlen.

    Momentan werden meine Strngs herausgelöscht, so wie mir scheint.

    Das liegt daran, dass ich einen anderen regulären Ausdruck verwendet hab als ihn _StringBetween verwendet.

    _StringBetween verwende ich generell nicht mehr, da ich persönlich die String.au3 nie verwende, da ist es für mich einfacher reguläre Ausdrücke zu verwenden.

    Wenn du dort dein _StringBetween einsetzt mit "[" und "]" sollte das richtige Ergebnis rauskommen.

    Mein Script ist sowieso fehleranfällig und komplett ohne Error-Handling, es ging ja auch nicht darum die perfekte Lösung zu zeigen,

    sondern nur wie du deine Datei in ein 2D-Array einlesen kannst.

  • 1D Array in 2D Array schreiben

    • alpines
    • 4. April 2018 um 10:42

    Indizes vertauschen, dann klappt das ganze auch.

    AutoIt
    #include <Array.au3>
    
    Local $sFile = "[11] [12] [13] [14] [15]" & @CRLF & _
                   "[21] [22] [23] [24] [25]" & @CRLF & _
                   "[31] [32] [33] [34] [35]"
    
    Local $aFile = StringSplit($sFile, @CRLF, 3)
    
    Local $a2DArray[5][UBound($aFile)]
    
    For $i = 0 To UBound($aFile) - 1
        Local $aRegEx = StringRegExp($aFile[$i], "(\d+)", 3)
    
        For $j = 0 To UBound($a2DArray) - 1
            $a2DArray[$j][$i] = $aRegEx[$j]
        Next
    Next
    
    _ArrayDisplay($a2DArray)
    Alles anzeigen
  • Virus in *.EXE

    • alpines
    • 31. März 2018 um 11:46
    Zitat von olfibits

    Gab es nicht mal in älteren Versionen ein Exe2Aut? Wenn es so was auch für AutoIt 3 und aufwärts gibt/gäbe, wäre das doch kein Problem.

    Bis zur 3.3.10.2 gabs eine, danach habe ich nichts mehr gefunden was gut funktioniert hat.

    Trotzdem musst du jede Exe darauf scannen ob es sich um eine AutoIt-Exe handelt, das kostet (wenn man sonst nur die Hash-Signatur vergleicht) viel Zeit.

  • Datei Time (Erstellung, Bearbeitung, letzter Zugriff) mit unterschiedlichen Ergebnissen

    • alpines
    • 31. März 2018 um 10:47
    Zitat von Peter S. Taler

    Kann autoit keine Hashwerte zu Dateien....?

    Na klar kann AutoIt hashen, dafür ist die Crypt-UDF ja da.

    Aber das kann bei größeren Dateien unter Umständen Zeit kosten (auch wenn die Algorithmen nicht in AutoIt implementiert sind) und da ist es einfacher einen Zeitstempel zu vergleichen.

  • Virus in *.EXE

    • alpines
    • 30. März 2018 um 20:55
    Zitat von olfibits

    Macht es nicht einfach Sinn dass das AutoIt Devteam zu den Herstellern gehen würde, mit der Methode zum AutoIt Script entschlüsseln und dass das Script und nicht das komplette Kompilat ausgewertet wird? Oder widerspricht das dem "Disassembling/Reverse Engineering", das in den Lizenzbedingungen steht?

    Dann müsste jede Exe erstmal geprüft werden, ob es sich um ein AutoIt-Kompilat handelt, diese anschließend entschlüsseln und zu guter Letzt das Script analysieren.

    Da wird sich jeder AV-Hersteller querstellen um einen Analysator für AutoIt-Skripte zu basteln um zu prüfen ob der Quellcode tatsächlich schädlich ist oder nicht.

    Es ist genau dasselbe Problem wie Andy es letztens mit Softwaregeschwindigkeit angesprochen hatte nur für AV-Hersteller.

    Statt, dass sich die AV-Hersteller Mühe geben eine perfekte Detektionsquote zu erreichen, kompensieren sie enorm viel Arbeit mit einigen False/Positives.

    Der normale Endnutzer wird sich nur denken "oh super, direkt einen Virus gelöscht!" und nur eine handvoll Leute wird sich darüber ärgern und den AV-Herstellern ist es einfach egal.

    Das ist auch verständlich, denn bemühten sie sich um eine 100%-Quote, wären sie pleite bevor sie überhaupt die erste Version released hätten.

  • _ArraySortStable2D stabiler MergeSort für 2D-Arrays

    • alpines
    • 30. März 2018 um 15:48

    Wie bereits in der SB bekannt wurde, ist der Sortieralgorithmus (insbesondere der für 2D-Arrays) in der Array.au3 bis zur 3.3.14.5 (ob das noch gefixt wird steht offen) nicht stabil.

    Das bedeutet, dass Einträge, welche den selben Schlüsselwert haben (der Vergleichswert) getauscht werden und so ihre vorherige Reihenfolge nicht behalten.

    Bei der UDF wird das 2D-Array mittels MergeSort sortiert indem man eine zu sortierende Spalte übergibt. Die Vertauschungen wirken sich auf die anderen Spalten ebenfalls aus und so hat man am Ende ein stabil sortiertes 2D-Array.

    Bei 1D-Arrays mag die Stabiltät eines Algorithmusses ja vielleicht egal sein, aber bei 2D-Arrays kann man damit wunderschöne Effekte erzielen um Daten zu sortieren.

    Beispiel:

    Man hat eine Tabelle (mit unsortierten Datensätzen) welche in der 1. Spalte die Postleitzahl und in der 2. Spalte den Namen einer Person beinhaltet.

    Sortiert man nun mit _ArraySortStable2D die 2. Spalte, so wird das Array in der 2. Spalte nun die sortierten Namen beinhalten (A-Z).

    Sortiert man anschließend wieder mit der UDF aber nun die 1. Spalte, so wird das Array in der 1. Spalte die sortierte Postleitzahl beinhalten, aber die 2. Spalte wird ihre relative Reihenfolge der Elemente, innerhalb der Postleitzahl, behalten.

    Man hat also am Ende ein Array mit der sortierten Postleitzahl (00000 - 99999) und in der 2. Spalte die Namen der Personen alphabetisch je nach Postleitzahl.

    Ein instabiler Algorithmus ignoriert diese Ordnung.

    Hier ein kleines Beispiel mit Früchten.

    AutoIt
    #include <Array.au3>
    #include "_ArraySortStable2D.au3"
    
    Local $aTestArray[5][2] = [[5, "Cherry"], [4, "Banana"], [3, "Cherry"], [2, "Orange"], [1, "Apple"]]
    
    _ArraySortStable2D($aTestArray, 0)
    _ArrayDisplay($aTestArray)
    
    _ArraySortStable2D($aTestArray, 1, Default, Default, True)
    _ArrayDisplay($aTestArray)

    Dieses Mal sogar mit UDF-Header und Errorhandling :D

    Die Vergleichsfunktion ignoriert Groß- und Kleinschreibung! Es wird der Unicode-Wert verglichen, dabei gilt allgemeinerweise:

    Zahlen < Buchstaben < Unicode-Zeichen.

    Dateien

    _ArraySortStable2D.au3 10,05 kB – 1.203 Downloads
  • Event "Anklicken" eines Inputfeldes abfragen

    • alpines
    • 29. März 2018 um 20:57
    Zitat von hipfzwirgel

    Hallo Alpines,

    deinen Code gerade in mein Proggi eingefügt. funzt tadellos. Mögest du die dicksten Eier und Größten Eier zu Ostern geschenkt bekommen :klatschen::party::part:

    Danke sehr :)

  • Event "Anklicken" eines Inputfeldes abfragen

    • alpines
    • 29. März 2018 um 15:11

    Da verwendest du am besten die Nachricht WM_COMMAND.

    Im LoWord von $wParam steht die Id des Controls und im HiWord steht der Code der Nachricht (in diesem Falle brauchst du $EN_SETFOCUS).

    Noch eine kleine Abfrage um nicht bei jedem Mal, wenn du reintabbst oder reinklickst, den enthaltenen Text löscht (sondern nur den 1. Platzhalter Text) und die Sache ist fertig.

    AutoIt
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    
    $Form1 = GUICreate("Form1", 224, 150, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 16, 16, 185, 89)
    GUICtrlSetData(-1, "blablubb")
    GUICtrlCreateButton("",  8, 110, 180, 30)
    GUISetState(@SW_SHOW)
    
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
    
        EndSwitch
    WEnd
    
    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
        Switch _WinAPI_LoWord($wParam) ;ControlId
            Case $Edit1
                If _WinAPI_HiWord($wParam) = $EN_SETFOCUS Then
                    GUICtrlSetData($Edit1, "")
                EndIf
        EndSwitch
    EndFunc
    Alles anzeigen
  • MYSQL - Insert Into Pfad Problem

    • alpines
    • 29. März 2018 um 11:56
    Zitat von Sonderbaar

    HÄH?

    Hier ein kleines Beispiel, die Methode "blablabla..." ist in Shell.Application nicht enthalten aber bringt AutoIt nicht dazu zu crashen, da der Fehler abgefangen wird.

    AutoIt
    $oShell = ObjCreate("Shell.Application")
    $oMyError = ObjEvent("AutoIt.Error", "_MyErrorHandler")
    
    $oShell.blablablablabla()
    
    Func _MyErrorHandler()
        $HexNumber = Hex($oMyError.Number, 8)
        $strMSG = "Error Number: " & $HexNumber & @CRLF
        $strMsg &= "WinDescription: " & $oMyError.WinDescription & @CRLF
        $strMsg &= "Script Line: " & $oMyError.ScriptLine & @CRLF
    
        MsgBox(0, "ERROR", $strMSG)
    Endfunc
    Alles anzeigen

    Selbes kannst du mit deinem Problem machen, registriere den Fehlerhandler und prüfe nach was die letzte Datei war und schreibe sie ins Fehlerlog/überspringe sie.

  • MYSQL - Insert Into Pfad Problem

    • alpines
    • 29. März 2018 um 11:31
    Zitat von autoiter

    Du solltest nach der Objekterstellung immer auf IsObj() prüfen. Wenn hier ein Fehler kommt, kannst du die Funktion mit Fehler verlassen und die Datei in deine Fehlerliste eintragen.

    So ein Fehler wird nicht zwangsweise von Nicht-Objekten geworfen. Es kann auch sein, dass das Objekt gültig ist und man Methoden aufrufen kann aber einige einfach fehlschlagen.

    Da ist es besser ein ObjEvent zu registrieren welche eine COM-Meldung auswirft und AutoIt nicht crasht sondern in die Fehlerfunktion springt.

  • [Gelöst] SQLite Problem mit Update ... set ... Funktion

    • alpines
    • 28. März 2018 um 21:34

    Schau dir mal die Dokumentation zu _SQLite_Startup an und dann schau mal was du versuchst zu machen: https://www.autoitscript.com/autoit3/docs/l…ite_Startup.htm

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™