Webcam.au3 fehler bei Windows 7 x32/x64

  • Hey Leute...

    mein Script:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <webcam.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 353, 230, 248, 195)
    $id = _WebcamOpen($Form1, 10, 10, 200, 200)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

    [/autoit]


    und mein problem ist folgende fehlermeldung, die meistens kommt, wenn man das script das 3e mal startet ...
    (also nachdemman die anderen beendet hat...;))

    hat jemand ne antwort...?

  • Passier bei mir auch (habe auch windows 7)
    Ich denke mal das liegt nicht an dem programm sondern dadurch das windows wissen will welches Videoprogramm man verwenden will.
    (warum das das erste Mal klappt weiss ich nicht, vllt weil dann ein ausgewählt wird aber das prog denkt es hat nicht funkt.)
    Wenn diese Gui kommt mit dem auswählen, und man das dann bestätigt, dann ist bei mir das bild schwarz.

  • autoBert: Der selbe Fehler tretet auf, sogar schon beim ersten mal öffnen.
    Es erscheint die selbe gui mit der abfrage, welches Prgramm man verwenden möchte.
    Wenn man es bestätigt, erscheint ein schwarzer Bildschirm.
    Das es beim ersten Mal nicht funktioniert, liegt sehr wahrscheinlich daran, das ich vorher bereits das andere skript von Fabian geöffnet hatte.
    Also muss es was mit Windows zu tun haben, nichts mit dem script....
    Ich habe es auch mal mit dem von Fabian vorgeschlagenen


    [autoit]


    If _Singleton($sProgTitel & $sProgVer, 1) = 0 Then MsgBox(0,"","Bereits vorhanden") WinActivate($sProgTitel & $sProgVer) Exit EndIf

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


    versucht, dann kommt jedoch die Fehlermeldung bereits vorhanden...
    (vllt schließt sich das prog beim ersten mal nicht richtig??)

  • also sehr wahrscheinlich, dass windows die verwendeten Ressourcen nicht wieder frei giebt...
    Also müsste man es über das Script machen!...
    es liegt also nahe, dass :

    [autoit]

    _WebcamClose($id)

    [/autoit]

    die verwendung der WebCam NICHT richtig runterfährt..!!!

    Jemand ne Idee, wie man es macht...? :)


    Edit: Auch die Idee, es mit _GDIPlus_Startup zu machen, funktioniert nicht wirklich....

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: autoBert http://www.autoit.de/index.php?page…2937#post182937
    based on http://www.autoitscript.com/forum/index.ph…ndpost&p=572154

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

    Script Function:
    Demo for Webcam Udf

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

    #ce ----------------------------------------------------------------------------
    #include 'webcam.au3'
    #include<GDIPlus.au3>
    #Include <Misc.au3>
    #include<array.au3>

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

    $cam_xlength = 640;Breite
    $cam_ylength = 480 ;Höhe

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

    $sProgTitel ="SnapShot from WebCam"
    $sProgVer = "v 0.8.1.3"

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

    $capDir = @ScriptDir & "\captures"
    If Not FileExists($capDir) Then DirCreate($capDir)

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

    HotKeySet("{INSERT}", "SnapShot")

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

    If _Singleton($sProgTitel & $sProgVer, 1) = 0 Then
    WinActivate($sProgTitel & $sProgVer)
    Exit
    EndIf

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

    $gui = GUICreate($sProgTitel & $sProgVer, $cam_xlength, $cam_ylength + 20, 0, 0)
    _GDIPlus_Startup()
    $WebcamID = _WebcamOpen($gui, 0, 0, $cam_xlength + 30, $cam_ylength)
    if $WebcamID = -1 Then
    MsgBox(16,"Fehler","WebCam kann nicht initialisiert werden!")
    exit
    EndIf
    $label1 = GUICtrlCreateLabel("", 0, $cam_ylength + 5, $cam_xlength, 20)

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

    GUISetState(@SW_SHOW)
    AdlibRegister("SnapShot", 10000)

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

    Do
    Until GUIGetMsg() = -3
    AdlibUnRegister("SnapShot")
    _WebcamClose($WebcamID)
    ConsoleWrite($WebcamID& @CRLF)
    _GDIPlus_Shutdown()

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

    Func SnapShot()
    $nr = 1
    While FileExists($capDir & "\Bild" & $nr & ".jpg")
    $nr += 1
    WEnd
    $oFile = $capDir & "\Bild.bmp"
    $nFile = $capDir & "\Bild" & $nr & ".jpg"
    if FileExists($oFile) Then FileDelete($oFile)
    _WebcamSnap($WebcamID, $oFile)

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

    Local $aDT = FileGetTime($oFile)
    $sInfo = $aDT[0] & "/" & $aDT[1] & "/" & $aDT[2] & " " & $aDT[3] & ":" & $aDT[4] & ":" & $aDT[5]
    ConsoleWrite($sInfo & @CRLF)

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

    $himg = _GDIPlus_ImageLoadFromFile($oFile)

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

    $hGraphics = _GDIPlus_ImageGetGraphicsContext($himg)
    $iX = _GDIPlus_ImageGetWidth($himg)
    $iy = _GDIPlus_ImageGetHeight($himg)
    $hBrush = _GDIPlus_BrushCreateSolid(); $Color)
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 20, 2)
    $tLayout = _GDIPlus_RectFCreate($iX -260, $iy -30)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sInfo, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, $sInfo, $hFont, $aInfo[0], $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImage($hGraphics, $himg, $iX, $iy)
    _GDIPlus_ImageSaveToFile($himg, $nFile)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_ImageDispose($himg)
    GUICtrlSetData($label1, $nr)
    FileDelete($oFile)
    EndFunc ;==>SnapShot#cs ----------------------------------------------------------------------------

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

    #cs
    AutoIt Version: 3.3.6.1
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    Einmal editiert, zuletzt von Mr_gitarre (11. September 2010 um 16:56)

  • Guckt euch das mal an:


    http://www.autoitscript.com/forum/index.php?s=27268e230dbf4a06f79226b9db6a19f1&showtopic=79366&st=0&p=572154&#entry572154


    dieses wabcamspy funktioniert bei mir .... mehrmals hintereinander.

  • Meldung kommt bei dem zwar immernoch aber dafür VIEL seltener...!
    2/10 mal aufrufen direkt hintereinander....:)

    ...hab immernoch keine ahnung, wodran das liegt....

  • in der webcam.au3 ..

    in der Funktion :: _WebcamClose($sId)

    fehlt DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_STOP , "int", 0, "int", 0)

    ... und wenn man es genau nimmt auch :: DllClose($avi) ..

    würde ich jetzt so sagen .. .. test's ,mal aus ..

  • Gibt es hier mittlerweile eine Lösung?
    Ich wäre sehr interessiert daran.

    Danke
    Gruß Daniel

  • http://www.autoitscript.com/forum/topic/79…154#entry572154
    hier klapts, ich denke das liegt daran das es nicht richtig geschlossen wird.

  • Ich vermute mal dein Link sollte auf einen Direkten Beitrag gehen!? Leider komme ich nur auf die Hauptseite des Forums.
    Kannst du mir nochmal genau sagen wo es klappt?

    Danke
    Gruß Daniel