_ScreenCapture_Capture (Variable werden nicht angenommen)

  • Hallo Forum

    Nach längere Zeit versuche ich mich mal wieder in AutoIt.

    Mit der Absicht bestimmten Screen – Ausschnitte zu erstellen, bin ich auf ein Problem gestoßen.

    Entnommen aus der Help

    Code
    #include <ScreenCapture.au3>
    $X=1137:$Y=265:$x=1310:$y=636
    
    Example()
    Func Example()
    Local $hBmp
    _ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image2.jpg",1137, 265, 1310,636)
    ShellExecute(@MyDocumentsDir & "\GDIPlus_Image2.jpg")
    EndFunc   ;==>Example

    Ersetze ich die Koordinaten durch Variable also

    Code
    _ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image2.jpg",$X, $Y ,$x,$y)

    verweigert Autoit die Aufgabe ohne Meldung.


    Was ist da falsch oder gibt es da eine Alternative?

    Danke für euere Hilfe

  • Silvermoon1 31. Januar 2023 um 07:35

    Hat den Titel des Themas von „_ScreenCapture_Capture (Variable weden nicht angenommen)“ zu „_ScreenCapture_Capture (Variable werden nicht angenommen)“ geändert.
  • Was ist da falsch oder gibt es da eine Alternative?

    Die Zeile $X=1137:$Y=265:$x=1310:$y=636 ist syntaktisch falsch.

    1. Trennzeichen bei mehreren Deklarationen in einer Zeile ist Komma, nicht Doppelpunkt

    2. Groß/Kleinschreibung bei Variablennamen wird nicht berücksichtigt, daher ist $X und $xidentisch (werden also nur einmal besetzt). Bei $Y analog

    AutoIt
    #include <ScreenCapture.au3>
    
    Local $iLeft=1137, $iTop=265, $iRight=1310, $iBottom=636
    
    Example()
    
    Func Example()
        _ScreenCapture_Capture(@ScriptDir & "\GDIPlus_Image2.jpg", $iLeft, $iTop , $iRight, $iBottom)
        ShellExecute(@ScriptDir & "\GDIPlus_Image2.jpg")
    EndFunc   ;==>Example

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (31. Januar 2023 um 09:13) aus folgendem Grund: typo : $iBottom , nicht $iButton :)

  • Hi Silvermoon,

    verschiedene Sachen:

    1. groß/kleinschreibung macht keinen Unterschied bei den Variablen, du redefinierst also X bzw. Y

    2. Nutze , anstatt : zum Trennen der Variablen

    3. Du musst Variablen Global oder Local definieren, da du außerhalb einer Funktion bist, wäre es Global.

    4. Würde ich die Variablen immer an Funktionen übergeben und versuchen Globale Variablen nach Möglichkeit zu vermeiden (es gibt natürlich Situationen, wo es Sinn macht)

    AutoIt
    #include <ScreenCapture.au3>
    
    Example(1137, 265, 1310, 636)
    
    Func Example($iLeft, $iTop , $iRight, $iBottom)
    Local $hBmp
      ;_ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image2.jpg",1137, 265, 1310,636)
      _ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image2.jpg", $iLeft, $iTop , $iRight, $iBottom)
      ShellExecute(@MyDocumentsDir & "\GDIPlus_Image2.jpg")
    EndFunc   ;==>Example

    Musashi war schneller ;) daher mal die bessere Variablennamen übernommen

    3 Mal editiert, zuletzt von Moombas (31. Januar 2023 um 09:40) aus folgendem Grund: geändert von Musashi

  • BugFix war schneller ;) daher mal die bessere Variablennamen übernommen

    Dieses Mal war ich schneller, nicht BugFix ;) (habe ich in deinem Beitrag geändert)

    Typo (von mir) : Es muss natürlich $iBottom heißen, nicht $iButton.

    Silvermoon :

    Beispiel bezüglich Groß/Kleinschreibung :

    AutoIt
    Local $A = 100, $a=300
    ConsoleWrite("$A = " & $A & @CRLF)
    ConsoleWrite("$a = " & $a & @CRLF)

    Wie Du siehst, wird für beide Variable der letzte zugewiesene Wert genommen (hier also 300)

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • verweigert Autoit die Aufgabe ohne Meldung.

    Du kannst nach der _ScreenCapture_Capture()- Zeile auf @error prüfen, um den Grund zu erfahren.

    Die Fehler sind in der Help-Datei nicht beschrieben, erschließen sich aber mit Blick in die Funktion(en). In Scite den Cursor auf den Funktionsnamen und dann CTRL-J springt in diese Funktion.

    Neben den von Musashi und Moombas beschriebenen Syntaxfehlern ist darauf zu achten, dass in dem ausgewählten Verzeichnis Schreibrechte bestehen!