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

Beiträge von Moombas

  • Winhttp.au3 / requests

    • Moombas
    • 17. August 2022 um 11:16
    AutoIt
    ;~ $sData = '[{"deviceId":"an-id-with-seperators","firmwareId":"an-id-with-seperators"}]'
       $sData = '[{"deviceId":"' & $DeviceID & '","firmwareId":"' & $firmwareID & '"}]'

    Das obere wäre copy&paste aus der API Doku nachdem man den Test-Part hat laufen lassen.

    AutoIt
    Func SendRequest($Target, $RequestType, $Request, $OptionalData = $WINHTTP_NO_REQUEST_DATA)
    Local $Response, $Data, $aArray, $Final, $Return, $ContentLength, $LastResponse
    Local $hOpen    = _WinHttpOpen()
    ; curl -X 'POST' \  
    : 'https://url/' \  
    Local $hConnect = _WinHttpConnect($hOpen, $Target)
        _WinHttpOpenRequest($hConnect, 'POST', $Request) 
    ; -H 'accept: application/json' \  
        _WinHttpAddRequestHeaders($hRequest, 'accept: application/json' & @CRLF)
    ; -H 'Authorization: Basic base64encryptedlogindata' \  
        _WinHttpAddRequestHeaders($hRequest, 'Authorization: Basic ' & base64($sUserName & ':' & $sPassword & ':somethingrequired', True, True) & @CRLF)
    ; -H 'Content-Type: application/json' \  
        _WinHttpAddRequestHeaders($hRequest, 'Content-Type: application/json' & @CRLF)
    ; -d '[{"deviceId":"an-id-with-seperators","firmwareId":"an-id-with-seperators"}]'
        _WinHttpSendRequest($hRequest, Default, $OptionalData)
    ;...
    EndFunc
    Alles anzeigen


    Und wie gesagt sämtliche Abfragen, die keine optionalen Daten benötigen, funktionieren einwandfrei.

  • Ausgangsszenarien für Turniere auflisten lassen

    • Moombas
    • 17. August 2022 um 08:03

    Ich weiß ja nicht wofür du das benötigst oder auf diese Idee kommst aber in der Regel wird bei soetwas immer in 2er Gruppen ausgetragen (oder wie bei der Bundesliga, erst in mehreren kleinen Gruppen á X Personen und dann 2er Duelle) in Pyramidenform ausgetragem, da das sonst nicht abbildbar ist. Mir fällt der Fachbegriff dafür gerade nicht ein.

    Aber evtl. kommst du mal mit dem Grund für diese Anfrage/Idee um die Ecke und wir können dir eine (andere) Lösung anbieten?

  • Winhttp.au3 / requests

    • Moombas
    • 16. August 2022 um 15:05

    Das kann dan eigentlich nur auf die zu übertragenen Daten passen, da alle anderen Anfragen (wo diese nicht benötigt wurden/werden) einwandfrei funktionieren.

    Ich bin verwirrt.

    Es wäre hilfreich wenn man den generierten Header etc. sich einmal ausgeben lassen könnte zum debuggen :(

  • Winhttp.au3 / requests

    • Moombas
    • 16. August 2022 um 13:20

    Ich habe das nun noch etwas angepasst, da ich gesehen habe das dort noch weitere Header zeilen benötigt werden, bekomme aber immer noch nicht das korrekte Ergebnis:

    Die zu übergebenden Daten sollen in den Request Body, falls das hilft.

    AutoIt
    Func SendRequest($Target, $RequestType, $Request, $OptionalData = $WINHTTP_NO_REQUEST_DATA)
    Local $Response, $Data, $aArray, $Final, $Return, $ContentLength
    Local $hOpen    = _WinHttpOpen()
    Local $hConnect = _WinHttpConnect($hOpen, $Target)
    Local $hRequest = _WinHttpOpenRequest($hConnect, $RequestType, $Request)
    
        if $OptionalData <> $WINHTTP_NO_REQUEST_DATA Then
            _WinHttpAddRequestHeaders($hRequest, 'accept: application/json' & @CRLF, $WINHTTP_ADDREQ_FLAG_REPLACE)
        Else
            _WinHttpAddRequestHeaders($hRequest, 'accept: application/stream+json' & @CRLF, $WINHTTP_ADDREQ_FLAG_REPLACE)
        EndIf
        _WinHttpAddRequestHeaders($hRequest, 'Authorization: Basic ' & base64($sUserName & ':' & $sPassword & ':blabla', True, True) & @CRLF)
        if $OptionalData <> $WINHTTP_NO_REQUEST_DATA Then
            ;$ContentLength = StringLen($OptionalData)
            _WinHttpAddRequestHeaders($hRequest, 'Content-Type: application/json' & @CRLF)                ;
            ;_WinHttpAddRequestHeaders($hRequest, 'Content-Length: ' & String($ContentLength) & @CRLF)     ;
        EndIf
    
        _WinHttpSendRequest($hRequest, Default, $OptionalData)
        _WinHttpReceiveResponse($hRequest)
    
        $Response = Stringsplit(_WinHttpQueryHeaders($hRequest), @CRLF)
        $Response = Stringsplit($Response[1], ' ')[2]
    
        $Data   = _WinHttpReadData($hRequest) ; ...get data
        $aArray = StringRegExp($Data,'"([^"]*)":"([^"]*)"', 3)
        if IsArray($aArray) then
            $Final = _Array_Resize($aArray, 2)
    ;~         _ArrayDisplay($aFinal)
        Else
            $Final = $Data
        EndIf
    
        _WinHttpCloseHandle($hRequest)
        _WinHttpCloseHandle($hConnect)
        _WinHttpCloseHandle($hOpen)
    
        $Return = Response($Response)
        If $Return Then
            Return $Final
        Else
            Return $Return
        EndIf
    EndFunc
    Alles anzeigen

    Ich bekomme immer "400" (wrong data) als response code.

  • Winhttp.au3 / requests

    • Moombas
    • 16. August 2022 um 12:59

    Ich nutze aktuell _WinHttpSendRequest($hRequest, Default, $OptionalData) und nicht die Simple Variante.

    Dies funktionierte bisher sehr gut aber da brauchte ich die zusätzlichen Daten aber auch noch nicht.

    AutoIt
    Func SendRequest($Target, $RequestType, $Request, $OptionalData = $WINHTTP_NO_REQUEST_DATA)
    Local $Response, $Data, $aArray, $Final, $Return
    Local $hOpen    = _WinHttpOpen()
    Local $hConnect = _WinHttpConnect($hOpen, $Target)
    Local $hRequest = _WinHttpOpenRequest($hConnect, $RequestType, $Request)
    
        _WinHttpAddRequestHeaders($hRequest, 'accept: application/stream+json' & @CRLF)
        _WinHttpAddRequestHeaders($hRequest, 'Authorization: Basic ' & base64($sUserName & ':' & $sPassword & ':somethingadditional', True, True) & @CRLF)
        ;Beispieldatenaufbau: $sData    = '[{"deviceId": "' & $DeviceID & '","firmwareId": "' & $firmwareID & '"}]'
        _WinHttpSendRequest($hRequest, Default, $OptionalData)
        _WinHttpReceiveResponse($hRequest)
    
        $Response = Stringsplit(_WinHttpQueryHeaders($hRequest), @CRLF)
        $Response = Stringsplit($Response[1], ' ')[2]
    
        $Data   = _WinHttpReadData($hRequest) ; ...get data
        $aArray = StringRegExp($Data,'"([^"]*)":"([^"]*)"', 3)
        if IsArray($aArray) then
            $Final = _Array_Resize($aArray, 2)
    ;~         _ArrayDisplay($aFinal)
        Else
            $Final = $Data
        EndIf
    
        _WinHttpCloseHandle($hRequest)
        _WinHttpCloseHandle($hConnect)
        _WinHttpCloseHandle($hOpen)
    
        $Return = Response($Response) ;Externe Funktion um den Response auszuwerten
        If $Return Then
            Return $Final
        Else
            Return $Return
        EndIf
    EndFunc
    Alles anzeigen
  • Winhttp.au3 / requests

    • Moombas
    • 16. August 2022 um 09:21

    Moin,

    ich nutze die Winhttp.au3 nun für eine API Ansteuerung.

    Das klappt auch (dank guter Doku der API) ganz gut, nun habe ich einen Block, wo ich nicht weiß wie ich diesen übergeben muss:

    Zitat

    Auszug aus der curl:

    curl -X 'POST' \

    'http...'\

    ...diverse Header (-H) zeilen \

    -d '[

    {

    "Feldname1": "Wert1",

    "Feldname2": "Wert2"

    }

    ]'

    Alles anzeigen

    Kann mir jemand sagen wie ich den "-d" block übergebe?

    Bin leider nicht so bewandert in http und stehe sicherlich einfach auf dem Schlauch. :/

  • GUI Label zwischen variabeln wechseln

    • Moombas
    • 16. August 2022 um 08:53

    1. Setze mal in Zeile 12 einen "Default" Wert für das Label

    2. Deine Variable ist keine GuI message

    3. deine Variable ändert sich ja nicht, dann funktioniert deine Abfrage nicht

    Bugfix war schneller ;)

    Wgen deinem F7:

    Mach es mal so:

    Code
    HotKeySet("{F7}", "_Abfrage")
    
    ...
    
    Func _Abfrage()
        if $abfrage = 0 Then
            $abfrage = 1
        elseif $abfrage = 1 Then
            $abfrage = 0
        Endif
        ;Alternativ: 
        ;nutze anstatt 0 und 1 False und True (auch in der Schleife), dann würde ich diese Funktion auch auf eine Zeile kürzen:
        ;$abfrage = not $abfrage
    EndFunc
    Alles anzeigen
  • Anzahl der Kopien auslesen aus Druckdialog (drucken mit printMGv2.au3​)

    • Moombas
    • 11. August 2022 um 15:09

    Dann wüsste ich das nur über was ich in Post #2 geschrieben habe:

    Zitat

    Versuch mal ob du das Feld ggf. mit ControlGetText bekommen kannst (die ID etc. kannst du evtl mit der Au3Info.exe bekommen (liegt im Autoit Ordner).

    Auch einfach aus dem Grund, das dieser Wert ja nirgends gespeichert wird, sondern nur im aktuellen Dialog gewählt wird und die Daten danach ausliest und anzeigt (also fast das gleiche was du auch machen möchtest).

  • Anzahl der Kopien auslesen aus Druckdialog (drucken mit printMGv2.au3​)

    • Moombas
    • 11. August 2022 um 14:45

    Dazu schaue mal da: https://www.autoitscript.com/forum/topic/18…r-all-printers/

  • Anzahl der Kopien auslesen aus Druckdialog (drucken mit printMGv2.au3​)

    • Moombas
    • 11. August 2022 um 14:30

    Schau dir das mal an: https://www.autoitscript.com/autoit3/docs/l…_PrintDlgEx.htm

  • Anzahl der Kopien auslesen aus Druckdialog (drucken mit printMGv2.au3​)

    • Moombas
    • 11. August 2022 um 14:07

    Versuch mal ob du das Feld ggf. mit ControlGetText bekommen kannst (die ID etc. kannst du evtl mit der Au3Info.exe bekommen (liegt im Autoit Ordner).

    Aber mal nebenbei, wenn du diesen Dialog startest, definierst du dann nicht dabei auch gleich den Wert den du gerade versuchst auszulesen?

  • Autostart in TrayTool

    • Moombas
    • 11. August 2022 um 08:54

    Ich denke mal das du das TrayItemSet durch TrayItemSetState ersetzt hast? Denn das andere kenne ich nicht und könnte auch nichts dazu finden.

  • Autostart in TrayTool

    • Moombas
    • 10. August 2022 um 15:28

    Versuch es mal mit $TRAY_CHECKED bzw $TRAY_UNCHECKED wobei beides eigentlich den gleichen Wert beinhaltet, wie die $GUI_ Variante

    Nachtrag: Versuch mal TrayItemSetState anstatt GUICtrlSetState

  • Autostart in TrayTool

    • Moombas
    • 10. August 2022 um 14:54
    Code
    #include <GUIConstantsEx.au3>
  • IR-Bewegungsmelder in ODER-Schaltung verwenden

    • Moombas
    • 10. August 2022 um 13:50

    Ein Draht ist halt ein Kurzschluss (nahezu kein Widerstand) und würde halt ggf. auch anfangen zu glühen (verbennst du dir schnell die Finger) bzw. eine schlagartige Entladung mag kein Kondensator wirklich gerne.

    Die Glühbirne wird gerne genommen, da du die Entladung sehen kannst (also auch ob er nun "theoretisch leer", weil Glühbirne aus, ist. richtig wäre: genug entladen).

  • Autostart in TrayTool

    • Moombas
    • 10. August 2022 um 13:44

    Pass auf, dein $autostartitem ja ausgelöst, danach würde ich so verfahren (funktioniert bei mir):

    AutoIt
    #include <GUIConstantsEx.au3>
    ...
    Case $autostartitem
        If GUICtrlRead($autostartitem) = $GUI_CHECKED  Then ;Rückgabewert = 1!
            ;MsgBox(0,"Info","Text",1)
            If Not FileExists(@StartupDir & "\ACT.lnk") Then
                FileCreateShortcut(@ScriptFullPath, @StartupDir & "\ACT.lnk", @ScriptDir, "", "AutoIT Script Description")
                ;MsgBox(1, 'Fehlermeldung nach dem Erstellen', _WinAPI_GetLastErrorMessage())
            EndIf
        Elseif GUICtrlRead($autostartitem) = $GUI_UNCHECKED  Then ;Rückgabewert = 4!
            If FileExists(@StartupDir & "\ACT.lnk") Then
                FileDelete(@StartupDir & "\ACT.lnk")
                MsgBox(1, 'Fehlermeldung nach dem Versuch ihn zu löschen', _WinAPI_GetLastErrorMessage())
            Endif
        EndIf           
    Alles anzeigen
  • IR-Bewegungsmelder in ODER-Schaltung verwenden

    • Moombas
    • 10. August 2022 um 13:18

    Alina Das Bauteil nennt man Kondensator und den kannst du generell mit jeder Art von passendem (bitte keinen Draht^^) Verbraucher entleeren oder nach dem Ausschalten (und entnehmen der Batterien/Stromquelle) lang genug warten, dann entleert er sich von selbst.

    Und bitte dann niemals einen Röhrenfernseher versuchen zu reparieren, dagegen ist der Blitz vom Fotoapparat nix ;)

  • Autostart in TrayTool

    • Moombas
    • 10. August 2022 um 12:52

    Damit habe ich bisher nicht gearbeitet aber ich würde das = $BN_CLICKED weg lassen.

    Wobei ich mich frage, ob du das überhaupt brauchst und nicht if GUICtrlRead($autostartitem)then generell reichen würde.

    Bzw. muss, denn du könntest bei selektierter Checkbox auch über die Leertaste die Box setzen, was evtl. kein $BN_CLICKED impliziert. (bin mir da aber aktuell nicht ganz sicher)

    Du kannst das ganze aber ganz einfach mit einer personalisierten Checkbox testen.

    Aber du bekommst ja eine Fehlermeldung, wo hast du diese eingebaut (sollte nach Zeile 150)?

    Und kannst du einmal die ganze Meldung posten?

  • Autostart in TrayTool

    • Moombas
    • 10. August 2022 um 11:59

    Hast du dir die Berechtigungen mal angeschaut bzw. mal das Ergebnis vom Filedelete wenn das löschen nicht klappt?

    Versuch das mal mit MsgBox(1, '', _WinAPI_GetLastErrorMessage()) (Die ersten beiden Parameter anpassen, ich setze das nur zum testen so ;)

    Benötigt dann #include <WinAPIError.au3>

  • IR-Bewegungsmelder in ODER-Schaltung verwenden

    • Moombas
    • 10. August 2022 um 07:44
    Zitat von Alina

    Jo Jo, ich schämich nicht nicht, weil ich es falsch verstanden habe. Kann schließlich nicht jede Abk. kennen.

    Moombas.
    Ich dachte jetzt das es wie bei meiner Teemaschine ist. Sobald paar Sekunden kein Wasser mehr im Tank ist, schaltet sich die Maschine aus. Ist das etwa kein Relais sondern so eine Membran, wie ich mal in der Schule gelernt habe, das sich bei Wärme ausdehnt und bei kälte wieder zusammen zieht?

    Alina Kein Problem, kann nicht jede(r) vom Fach sein^^

    Bei solchen Vorgängen ist es in der Regel ein Bi-Metall (bin mir gerade nicht sicher ob du das mit Membran meintest^^).

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™