Könnt ihr bitte ein Blick drüber werfen??

  • Hallo!
    Es funktioniert alles bei meinem Script. Er soll einfach nur einen ausgewählten Bildschirmbereich als jpg datei speichern.
    Nur wenn mein Script beendet wird, egal wie, erscheint eine Fehlermeldung: "AutoIt v3 Script funktioniert nicht mehr"

    Problemsignatur:
    Problemereignisname: APPCRASH
    Anwendungsname: autoit3.exe
    Anwendungsversion: 3.3.6.0
    Anwendungszeitstempel: 4b93cf87
    Fehlermodulname: autoit3.exe
    Fehlermodulversion: 3.3.6.0
    Fehlermodulzeitstempel: 4b93cf87
    Ausnahmecode: c0000005
    Ausnahmeoffset: 00010d7a
    Betriebsystemversion: 6.1.7600.2.0.0.256.48
    Gebietsschema-ID: 1031
    Zusatzinformation 1: 0a9e
    Zusatzinformation 2: 0a9e372d3b4ad19135b953a78882e789
    Zusatzinformation 3: 0a9e
    Zusatzinformation 4: 0a9e372d3b4ad19135b953a78882e789

    Ich bin echt am Verzweifeln. Habe schon vieles probiert, bin aber nicht zu einer Lösung gekommen.

    [autoit]

    #include <Misc.au3>
    #include <Array.au3>
    #include <ScreenCapture.au3>

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

    $UserDLL = DllOpen("user32.dll")

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


    While 1
    If _IsPressed("01", $UserDLL) And _IsPressed("A2", $UserDLL) Or _IsPressed("A3", $UserDLL) Then
    Local $Start_Pos = MouseGetPos()
    ExitLoop
    EndIf
    WEnd
    While 1
    If Not _IsPressed("01", $UserDLL) And _IsPressed("A2", $UserDLL) Or _IsPressed("A3", $UserDLL) Then
    Local $End_Pos = MouseGetPos()
    $left = $Start_Pos[0]
    $top = $Start_Pos[1]
    $with = $End_Pos[0] - $Start_Pos[0]
    $height = $End_Pos[1] - $Start_Pos[1]
    ExitLoop
    EndIf
    WEnd

    Local $CaptureFile = @YEAR & "-" & @MDAY & "-" & @MON & "_" & @HOUR & "." & @MIN &"." & @SEC & ".jpg"
    DllCall("captdll.dll", "int", "CaptureRegion", "str",$CaptureFile, "int", $left, "int", $top, "int", $with, "int", $height, "int", 100)
    Sleep(1000)


    Exit

    [/autoit]


    Ich benutze Windows 7 Professional 64BIT

    Einmal editiert, zuletzt von monzterhun (27. Dezember 2010 um 01:19)

  • Hallo monzterhun,

    füge

    [autoit]

    DllClose($UserDLL)

    [/autoit]

    vor dem exit ein, ich glaube zwar nicht dass dies das Problem verursacht, aber es ist sauberer programmiert (siehe Hilfebeispiel zu _IsPressed).
    Warum benutzt du captdll.dll (ist mir unbekannt)und nicht _ScreenCapture_Capture aus der ScreenCapture.au3?
    Du solltest die captdll.dll anhängen, oder ist das eine Standard-DLL von Windows 7?

    frohe Weihnachten autoBert

  • hey danke für die antworten.
    also die DLL habe ich vom internet runtergeladen, ist wohl von einem benutzer erstellt worden.
    ich werde es gleich mit _ScreenCapture_Capture probieren.

  • hi
    Es hat einmal geklappt, aber der auschnitt war nicht vollständig. also er hat nur einen teil meiner auswahl gespeichert.
    Könnt ihr mir vllt. sagen an was es liegt???
    das ist mein code mit der _screenCapture_Capture methode

    [autoit]

    #include <Misc.au3>
    #include <Array.au3>
    #include <ScreenCapture.au3>

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

    $UserDLL = DllOpen("user32.dll")

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


    While 1
    If _IsPressed("01", $UserDLL) And _IsPressed("A2", $UserDLL) Or _IsPressed("A3", $UserDLL) Then
    Local $Start_Pos = MouseGetPos()
    ExitLoop
    EndIf
    WEnd
    While 1
    If Not _IsPressed("01", $UserDLL) And _IsPressed("A2", $UserDLL) Or _IsPressed("A3", $UserDLL) Then
    Local $End_Pos = MouseGetPos()
    $left = $Start_Pos[0]
    $top = $Start_Pos[1]
    $with = $End_Pos[0] - $Start_Pos[0]
    $height = $End_Pos[1] - $Start_Pos[1]
    ExitLoop
    EndIf
    WEnd

    ;Local $CaptureFile = @YEAR & "-" & @MDAY & "-" & @MON & "_" & @HOUR & "." & @MIN &"." & @SEC & ".jpg"

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

    Sleep(1000)

    _ScreenCapture_Capture(@MyDocumentsDir & "test.jpg",$left,$top,$with,$height)

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

    DllClose($UserDLL)

    Exit

    [/autoit]
  • so funktionierts:

    [autoit]

    _ScreenCapture_Capture(@MyDocumentsDir & "\test.jpg", $Start_Pos[0], $Start_Pos[1], $End_Pos[0], $End_Pos[1])

    [/autoit]

    der Backlash hat gefehlt (und die Koordinaten rechts unten augetauscht, aber das hat dir name22) ja chon gepostet

    mfg autoBert

  • es klappt jetzt :)
    danke für eure hilfe.
    ich habe wohl autoit einfach unterschätzt :)
    aber es macht mir iwie spaß in autoit zu coden. es ist halt mal was anderes, sonst kann ich java und c++ und habe auch bisher nur in diesen sprachen programmiert.