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

Beiträge von BugFix

  • Webcam-preview aus einer Form entfernen.

    • BugFix
    • 29. August 2011 um 21:51
    Zitat von kettensaege

    immer der schwarze Kasten zu sehen wo das Previewwindow war. Gibt es keine möglichkeit dieses GUI- Element wieder zu entfernen?


    Entfernen ist nicht sinnvoll - dann bekommst du es nicht wieder zum Laufen. Wenn du das schwarze Capture-Window (es ist kein Control, sondern ein separates Fenster) nicht sehen magst, schieb einfach ein Child-Window bei Bedarf drauf.
    Hier der betreffende Teil aus meinem Bsp. um das Child-Window ergänzt.:

    Spoiler anzeigen
    [autoit]

    $hWnd_Blende = GUICreate("", 322, 242, 9, 9, $WS_POPUP, $WS_EX_MDICHILD, $hWnd_Camera) ; == Child Erstellen
    GUISetState(@SW_SHOW, $hWnd_Blende) ; == Child zeigen --> überdeckt das Capture-Fenster

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

    WinSetOnTop($hWnd_Camera, '', 1)
    GUISetState(@SW_SHOW, $hWnd_Camera)

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

    While True
    Sleep(50)
    WEnd

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

    Func _exit()
    _WebcamClose($idCam)
    Exit
    EndFunc

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

    Func _CameraOnOff()
    ; == Kamera (de)aktivieren - Standbild An/Aus
    If $isCamera = 0 Then
    GUICtrlSetData($btCamera, 'Kamera AUS')
    GUICtrlSetColor($btCamera, 0xFF0000)
    GUICtrlSetState($btFoto, $GUI_ENABLE)
    GUISetState(@SW_HIDE, $hWnd_Blende) ; == Kamera wird aktiviert --> Child ausblenden
    _WebcamActive($idCam)
    Else
    GUICtrlSetData($btCamera, 'Kamera EIN')
    GUICtrlSetColor($btCamera, 0x008000)
    GUICtrlSetState($btFoto, $GUI_DISABLE)
    GUISetState(@SW_SHOW, $hWnd_Blende) ; == Kamera wird deaktiviert --> Child einblenden
    _WebcamInactive($idCam)
    EndIf
    $isCamera = BitXOR($isCamera, 1)
    If $isCamera = 1 Then _PreviewOnOff()
    EndFunc

    [/autoit]
  • Benöte ein programm für Serien Briefe ( schwierige vorraussetzungen )

    • BugFix
    • 29. August 2011 um 19:20
    Zitat von Adamkaller

    soll eine 18 stellige Nummer aus einer ecxel datei
    entnehmen deren länge variabel ist.


    Ja was denn nun? Fisch oder Fleich? ;)

  • Webcam-preview aus einer Form entfernen.

    • BugFix
    • 29. August 2011 um 19:12

    Die UDF von Ludocos ist nicht gerade ausgereift :whistling: . Ich habe diese mal etwas umgearbeitet und dieses Bsp. erstellt.

  • DOS-Abfrage -> Ordnerinhalt auflisten und in txt-Datei schreiben (Variablen Problem)

    • BugFix
    • 25. August 2011 um 12:15

    Wozu der Umweg, kann doch alles im Aufruf erledigt werden (Einfügen Quotierung im Aufrufstring vor und nach Pfadvariable):

    [autoit]

    RunWait(@COMSPEC & " /c Dir '" & $Path & "' > test.txt", "", @SW_HIDE)

    [/autoit]
  • Transparente GIF als Button nutzen

    • BugFix
    • 24. August 2011 um 18:25

    Bisher habe ich das immer als Einzellösung neu geschrieben - nun in einer UDF verpackt.
    Es lassen sich GIFs mit Transparenz als Schaltflächen verwenden, bei Klick wird das Buttonverhalten auch in der Darstellung simuliert

    Aufgrund des internen Handlings ist zur Nutzung zwingend der OnEventMode erforderlich!

    Folgende Funktionen stehen zur Verfügung:

    _GUICtrl_TransGifButton_Create
    Erstellt aus einem transparenten GIF ein Button-Control, dass bei Klick buttontypisch animiert wird
    Die Anzahl der erstellbaren Button ist z.Zt. auf 255 begrenzt.

    _GUICtrl_TransGifButton_Show
    Macht alle erstellten GIF-Button sichtbar

    _GUICtrl_TransGifButton_GetMsg
    Gibt den String-Identifier des geklickten GIF-Button zurück

    _GUICtrl_TransGifButton_SetImage
    Setzen eines neuen Images für einen GIF-Button

    Hier ein Bsp. (Binärdaten gekürzt, im Anhang kpl.)

    Spoiler anzeigen
    [autoit]

    #Region - TimeStamp
    ; 2011-08-24 17:41:41
    #EndRegion - TimeStamp

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

    #include <GUIConstantsEx.au3>
    #include 'TransGifButton.au3'

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

    Opt('GuiOnEventMode', 1)

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

    #region - Transparente Bild-Datei
    OnAutoItExitRegister("_DelBinaryTempFiles")
    ; == Picture binär
    Global $aBin[3], $aPictFile[3]
    $aBin[0] = "0x47494638396130003000F7000000000062440E6365397F7624616F427A7C6B3E7ECA417CC118BA7824C6793DDB7F7EAD6F52D07E5E89AC5CB7857182807F9D9C729DAD64BA8675A5B5478BDC498CD.."
    $aPictFile[0] = @ScriptDir & "\tmp_pict_0.gif"
    $aBin[1] = "0x47494638396130003000F70000000000153E0C1F5B0A3B5F382668072A700E357C1833672E3975383D7C31437D1C4A7C2449484950524F5153515958576A6A696F6D6A7173717574737B7A777D7D7.."
    $aPictFile[1] = @ScriptDir & "\tmp_pict_1.gif"
    $aBin[2] = "0x47494638396130003000F700000000001E4F65364E59384F5A38505B3B535D20516624546929596E2C5C72335D6F3F566031607636657A3B617238677C39687D4259644960694A636E4B646F4C626.."
    $aBin[2] &= "00270C6287513C4354CEC0850B6EA00639F802136C48820B14718B5D1401978B78C43527400146AC22164BDC64307D63102CEC424BD928C50B92A00636AC41093368C02550A10A13E811038AD0C32F.."
    $aPictFile[2] = @ScriptDir & "\tmp_pict_2.gif"

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

    For $i = 0 To 2
    Local $hFileOut = FileOpen($aPictFile[$i], 2+8+16)
    FileWrite($hFileOut, Binary($aBin[$i]))
    FileClose($hFileOut)
    Next

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

    Func _DelBinaryTempFiles()
    For $i = 0 To 2
    FileDelete($aPictFile[$i])
    Next
    EndFunc
    #endregion - Transparente Bild-Datei

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

    $guiMain = GUICreate('Main', 400, 300, 200, 100)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_exit', $guiMain)
    GUISetBkColor(0xFFFFAA, $guiMain)

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

    $GifButton1 = _GUICtrl_TransGifButton_Create($guiMain, '_ImageClick', $aPictFile[0], 60, 126, 48, 48)
    $GifButton2 = _GUICtrl_TransGifButton_Create($guiMain, '_ImageClick', $aPictFile[1], 176, 126, 48, 48, $WS_BORDER)
    $GifButton3 = _GUICtrl_TransGifButton_Create($guiMain, '_ImageClick', $aPictFile[2], 292, 126, 48, 48, $WS_THICKFRAME)

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

    _GUICtrl_TransGifButton_Show()
    GUISetState(@SW_SHOW, $guiMain)

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

    $t = TimerInit()
    While 1
    Sleep(50)
    If TimerDiff($t) >= 3000 Then
    _GUICtrl_TransGifButton_SetImage($GifButton1, $aPictFile[2])
    EndIf
    WEnd

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

    Func _exit()
    Exit
    EndFunc

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

    Func _ImageClick()
    Switch _GUICtrl_TransGifButton_GetMsg()
    Case $GifButton1
    MsgBox(0, '', 'Picture-Button 1 geklickt')
    Case $GifButton2
    MsgBox(0, '', 'Picture-Button 2 geklickt')
    Case $GifButton3
    MsgBox(0, '', 'Picture-Button 3 geklickt')
    EndSwitch
    EndFunc

    [/autoit]
    TransGifButton.au3 v1.0
    [autoit]

    #Region - TimeStamp
    ; 2011-08-24 18:00:01 v 1.0
    #EndRegion - TimeStamp
    #include-once
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    ;===============================================================================
    ; Function Name....: _GUICtrl_TransGifButton_Create
    ; Description......: Erstellt aus einem transparenten GIF ein Button-Control, dass bei Klick buttontypisch animiert wird
    ; Parameter(s).....: $hWndMain Handle des Fensters auf dem der Button erstellt wird
    ; $sFunc Funktion, die bei Klick auf den Button ausgeführt wird
    ; $sPathGIF Pfad zur GIF-Datei
    ; $iX x-Position auf der GUI
    ; $iY y-Position auf der GUI
    ; $iW Breite des Button
    ; $iH Höhe des Button
    ; $iStyle Wenn gewünscht, kann mit $WS_THICKFRAME oder $WS_BORDER kombiniert werden
    ; Requirement(s)...: Um den Button zu sehen, muß vor oder nach @SW_SHOW der GUI die Funktion "_GUICtrl_TransGifButton_Show()" aufgerufen werden
    ; Return Value(s)..: Erfolg String-Identifier, der die Auswertung über "_GUICtrl_TransGifButton_GetMsg()" ermöglicht
    ; Fehler 0 @error 1 - Mainwindow existiert nicht
    ; 2 - Imagepfad existiert nicht
    ; Note.............: Der Button registriert nur Klicks, die das Bild treffen! Ein Klick in den transparenten Bereich wird nicht erkannt.
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GUICtrl_TransGifButton_Create($hWndMain, $sFunc, $sPathGIF, $iX, $iY, $iW, $iH, $iStyle=-1)
    Local $STYLE = $WS_POPUP
    If $iStyle <> -1 Then $STYLE = BitOR($WS_POPUP,$iStyle)
    If Not WinExists($hWndMain) Then Return SetError(1,0,0)
    If Not FileExists($sPathGIF) Then Return SetError(2,0,0)
    Local $guiChildButton = GUICreate("", $iW, $iH, $iX, $iY, $STYLE, BitOR($WS_EX_LAYERED,$WS_EX_MDICHILD), $hWndMain)
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '__GUICtrl_TransGifButton_MDown', $guiChildButton)
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, '__GUICtrl_TransGifButton_MUp', $guiChildButton)
    Local $aParam[4] = [$hWndMain,$guiChildButton,$sFunc,GUICtrlCreatePic($sPathGIF, 0, 0, $iW, $iH)]
    __GUICtrl_TransGifButton_Manage('add', $aParam)
    Return __GUICtrl_TransGifButton_Manage('create_sID', $guiChildButton)
    EndFunc ; ==>_GUICtrl_TransGifButton_Create

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

    ;===============================================================================
    ; Function Name....: _GUICtrl_TransGifButton_Show
    ; Description......: Macht alle erstellten GIF-Button sichtbar
    ; Parameter(s).....: keine
    ; Requirement(s)...: Ausführen vor oder nach @SW_SHOW der Haupt-GUI
    ; Return Value(s)..: kein
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GUICtrl_TransGifButton_Show()
    __GUICtrl_TransGifButton_Manage('show_All')
    EndFunc ; ==>_GUICtrl_TransGifButton_Show

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

    ;===============================================================================
    ; Function Name....: _GUICtrl_TransGifButton_GetMsg
    ; Description......: Gibt den String-Identifier des geklickten GIF-Button zurück
    ; Parameter(s).....: keine
    ; Requirement(s)...: keine
    ; Return Value(s)..: kein
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GUICtrl_TransGifButton_GetMsg()
    Return __GUICtrl_TransGifButton_Manage('get_Clicked')
    EndFunc ; ==>_GUICtrl_TransGifButton_GetMsg

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

    ;===============================================================================
    ; Function Name....: _GUICtrl_TransGifButton_SetImage
    ; Description......: Setzen eines neuen Images für einen GIF-Button
    ; Parameter(s).....: $sID String-Identifier von _GUICtrl_TransGifButton_Create
    ; $sPathImage Pfad zur GIF-Datei
    ; Requirement(s)...: keine
    ; Return Value(s)..: Erfolg 1
    ; Fehler 0 @error 1 - $sID existiert nicht
    ; 2 - GIF-Datei existiert nicht
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GUICtrl_TransGifButton_SetImage($sID, $sPathImage)
    Local $index = StringTrimLeft($sID, 11)
    Local $CtrlID = __GUICtrl_TransGifButton_Manage('get_sID', $index)
    If @error Then Return SetError(1,0,0)
    If Not FileExists($sPathImage) Then Return SetError(2,0,0)
    Return GUICtrlSetImage($CtrlID, $sPathImage)
    EndFunc ; ==>_GUICtrl_TransGifButton_SetImage

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

    #region - Interne Funktionen
    Func __GUICtrl_TransGifButton_Manage($sCommand, $vParam=0) ; max 255 Button ==> wenn mehr erwünscht >> $aGIFButton vergrößern
    Local Static $aGIFButton[256][3] = [[0]]
    Local Static $lastBtClicked = '', $BtClicked = ''
    Local $index
    Switch $sCommand
    Case 'add'
    $aGIFButton[0][1] = $vParam[0] ; hWndMain
    $aGIFButton[0][0] += 1
    $aGIFButton[$aGIFButton[0][0]][0] = $vParam[1] ; hWndChild
    $aGIFButton[$aGIFButton[0][0]][1] = $vParam[2] ; Funktionsname
    $aGIFButton[$aGIFButton[0][0]][2] = $vParam[3] ; Picture-ID
    Case 'get_Func'
    $index = _ArraySearch($aGIFButton, $vParam)
    If Not @error Then Return $aGIFButton[$index][1]
    Case 'create_sID'
    $index = _ArraySearch($aGIFButton, $vParam)
    If Not @error Then Return 'Gif_Button_' & $index
    Case 'show_All'
    For $i = 1 To $aGIFButton[0][0]
    GUISetState(@SW_SHOW, $aGIFButton[$i][0])
    Next
    Case 'set_Clicked'
    $index = _ArraySearch($aGIFButton, $vParam)
    $BtClicked = 'Gif_Button_' & $index
    Case 'get_Clicked'
    If $BtClicked <> $lastBtClicked Then
    $lastBtClicked = $BtClicked
    Return $BtClicked
    Else
    Return ''
    EndIf
    Case 'end_Func'
    $lastBtClicked = ''
    Case 'get_HWnd'
    Return $aGIFButton[$vParam][0]
    Case 'get_sID'
    Return $aGIFButton[$vParam][2]
    Case 'get_Main'
    Return $aGIFButton[0][1]
    EndSwitch
    EndFunc ; ==>__GUICtrl_TransGifButton_Manage

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

    Func __GUICtrl_TransGifButton_MDown()
    Local $hWnd = WinGetHandle('[ACTIVE]')
    Local $pos = WinGetPos($hWnd)
    WinMove($hWnd, '', $pos[0]+1, $pos[1]+1)
    EndFunc ; ==>__GUICtrl_TransGifButton_MDown

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

    Func __GUICtrl_TransGifButton_MUp()
    Local $hWnd = WinGetHandle('[ACTIVE]')
    WinActivate(__GUICtrl_TransGifButton_Manage('get_Main'))
    Local $pos = WinGetPos($hWnd)
    WinMove($hWnd, '', $pos[0]-1, $pos[1]-1)
    __GUICtrl_TransGifButton_Manage('set_Clicked', $hWnd)
    Call(__GUICtrl_TransGifButton_Manage('get_Func', $hWnd))
    __GUICtrl_TransGifButton_Manage('end_Func', $hWnd)
    EndFunc ; ==>__GUICtrl_TransGifButton_MUp
    #endregion

    [/autoit]

    Dateien

    TransGifButton[1.0].au3 6,85 kB – 544 Downloads Bsp_TransGifButton.au3 13,33 kB – 497 Downloads
  • Bild Transparent machen

    • BugFix
    • 24. August 2011 um 10:43

    Hier mal ein Mustercode (Bild ist binär eingebunden).

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    #region - Transparente Bild-Datei
    OnAutoItExitRegister("_DelBinaryTempFiles")
    ; String mit den Binärdaten von: config_tool1.gif (48x48)
    Local $bPict = "0x47494638396130003000F70000000000153E0C1F5B0A3B5F382668072A700E357C1833672E3975383D7C31437D1C4A7C2449484950524F5153515958576A6A696F6D6A7173717574737B7A777D7D7D7E7E7E3E820D3E82163E84233E813E43820C4880164E83154B8A114A8A1851871B538D1457921A4186234789224A8A2C4A8E2F498E314F92254A90314B91324E93354A9039528F2250803253962052972B5A992652973754973D54983B5A9D345D9F33619F2967A22960A13B6BA7326AA53D6CA93B72AA2D70AA3F78AE3C49934C5C89455895525E935F57A55C5DA163648C4F6C985C6991687298677B9D6A61A14065A44A69A64461A3506CA85169AA5C76B04C7CB5457FB64972B05477B15779B75762A66966A36867AE6D6EAC7773B36B7EB8667DB86D7DBA747EBC7079B8797EBD8686BA4781B85F86BB668BB96F87B57281BF7D8AB8718BC1528BC66B8CC77C91C7749AD27D8384838585858686868989898C8C8C8E8E8E9090909292929494949596959696969799989898989A9A9A9C9B9B9E9E9E9F9F9F80AD858DA782A0A0A0A3A3A3A5A5A1A6A6A6A5AEA5A8A4A2A9A9A9AAAAAAACACACAEAEAEAFAFAFB0B0AFB0B0B0B1B1B1B2B2B2B3B3B4B2B4B2B4B4B4B6B6B6B7B7B7B8B8B8BABABABCBCBCBEBEBEBFBFBF85C18086C3858FC98B92CA8291CD8797CF8890CB9092CE9496CF9094CF969DC59895D1999FD6929CD6959EC9A195D0A19BD2A99FD9A39ED9A59FDAA69ED9A89FD9A9A0C698A0DAA6A4DDA2A7DDA7A1DAA8A4DEAAA4DDACA7DFAFA7DEB6A8D9B2ABDCB8B4D2A9B5DDBDA7E0AFAAE2ACACE3A8A8E1B1A9E2B0ABE2B1AEE6B6AFE7BBB1E8B9B0E9BDB0E8BFB2EAC1B4EDC7B7EFC8B8F0CBC0C0C0C1C1C1C2C2C2C4C4C4C6C6C6C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D2D2D2D4D4D4D6D6D6D8D8D8D9D9D9DADADADBDBDBDCDCDCDEDEDEC1F8D3E0E0E0E1E1E1E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFEFEFE00000021F904010000FF002C00000000300030000008FF00FF091C48B0A0C18308132A5CC8B0A1C3871023E6C2A52BA24584A4C0B852B64CD5C58F03596C29658C5C3254202F1EC9E0E44C2C5AB6BEA42CE86E1E3F85490AA880B269950D644F66FECB362F5F3E81D5C021146060058A519EA8043313F11BC14CEEE0C18B27D05ABD840432C060D2CA8AA83511A7D5FB3AE91CBAB7021BCDF39730C885142FBCD4E241AC0AC46AE9D6B15B67EE5AB36802FDE03B9A5001061931429D8A320C8DC345DDC0651237AE5CB9698BFE49D3C6AEDDC20D236A3469A5A6D3278789BA4162000193BB76EACE9513C779DC42251E4EDCE8D24B8AB0310D9F79E36328C28470F5EC2DD687AF9E3C862E3ED0C0014AD6946265188AFFBBD4C0CD206ADBBA9943A7AEDDBB78A619722091C347AC366C4CED52A8ED5B9E070E48308E37DC4C438D36E979C38C432198A00317C0A4310B190A89F3CD368C50F0C8371C7AA38D33975442C843468830430F9CF822C62DB020840D37FD11D88D37DE7C43A3338158B4400B4BFCC0CA2FC768715033CFE8F1467F1C7E93CD227EA4D441093B68F24A2A57185449338854924834DE54D2A450FF000242024260514416053D72C922975CF28C34601A848006401011062F032D524925CF3833CD24712284C40143FC2190229438630D357F069A5000031412C92395BCB8CD358E2E74879B977C234E38DA64BA50227268830D3AE76C23AA429648E32587DCACFC9A1035D57C53CF2592C42AEB41DC5473CE3EFBDCB3C735AAEE4A1037D4C0D34F3FFC78F34F1C4A192B1036D3CCB3EC3EDD0CB48755C642238D3C46D9A3EB40958C9BA9246FC233CF3CF2845A501DEE664A0734D1B4D7CE3AD8200447B68ED611CD33E59863CE38D328D48733810AD2278DDE7483F0429838026625CC30A3CDC5D83CBC9005D9CCE4672597482372348839240735203DB34D36CE34E332337042A44D342847844D378910E2CD35965812CD881065E288251685537323E058F20CD010C1D16AC11095339024E25073C8477674233544E3440BCD378980040722F46CED901FE054534D377ACC0407AE11CD81871C15486BF7DD78DB1D10003B"
    Global $sPictFile = @ScriptDir & "\config_tool.gif"
    Local $hFileOut = FileOpen($sPictFile, 2+8+16)
    FileWrite($hFileOut, Binary($bPict))
    FileClose($hFileOut)

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

    Func _DelBinaryTempFiles()
    FileDelete($sPictFile)
    EndFunc
    #endregion

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

    $guiMain = GUICreate('Main', 400, 300)
    ; == Ein Child erstellen in der Größe des Pictures
    $guiChild = GUICreate("Child", 48, 48, 176, 126, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $guiMain)
    ; == darauf platzieren wir das transparente Picture
    GUICtrlCreatePic($sPictFile, 0, 0, 48, 48)
    GUISetState(@SW_SHOW, $guiChild)
    GUISetState(@SW_SHOW, $guiMain)

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

    $t = TimerInit()
    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch
    If TimerDiff($t) >= 3000 Then GUISetBkColor(0xFFFFAA, $guiMain)
    WEnd

    [/autoit]
  • ColorConstantsEx - 400 klassische Farbbezeichnungen + Anzeigetool

    • BugFix
    • 23. August 2011 um 22:01

    Grundsätzlich sollte wohl auch jeder mit den englischen Begriffen klarkommen. Das ist nun mal die Standardsprache im Computerbereich.
    Du kannst ja aber auch im Include die Systemsprache abfragen und in Abhängigkeit davon die Konstanten in deutsch oder englisch gestalten. ;)

  • Zwei Webcam-Anwendungen

    • BugFix
    • 23. August 2011 um 17:22
    Zitat von Twodollarbillie

    Schnappschuss mit 'ss'


    Nee nee, bei mit wird noch scharf geschossen. :rofl:

  • Zwei Webcam-Anwendungen

    • BugFix
    • 23. August 2011 um 16:52

    Hi,
    nachdem ich die Webcam-UDF von Ludocus etwas erweitert habe, ist sie nun auch sinnvoll nutzbar. (außer Video-Aufzeichnung, die schmiert noch ab - da bin ich noch dran)
    Hier mal ein kleines Bsp.:
    - Kamera ein/ausschalten
    - Toggle Standbild/Livebild
    - Schnappschuß (gespeichert wird im @ScriptDir)
    - *.avi -Aufzeichnung (Speicherplatz in Einstellungs-INI bestimmbar) <== Bsp. 2 (MyWebcam)

    Edit 13.09.2011
    Die zweite Anwendung basiert auf der ersten, hat aber zusätzlich auch die Record-Funktion. In der Original-UDF fehlten da die entscheidenden Funktionen um Aufzunehmen ohne dass die Anwendung einfriert. Das Problem ist nun gelöst.
    Resultierend daraus ist die Konstantendatei um eine Struktur erweitert. Die Funktionen habe ich jetzt in eine eigene Datei gepackt. Wenn ihr sie nicht im registrierten Include-Ordner speichert, muß zumindest die Konstanten-Datei im selben Ordner, wie die Funktionsdatei gespeichert werden.

    Ich habe nur die notwendigen UDF-Funktionen gleich in das Skript gepackt (getrennt in Bsp. MyWebcam). Die Konstanten habe ich jedoch in die "WebcamConstants.au3" ausgelagert.

    SimpleWebcamApp
    [autoit]

    #Region - TimeStamp
    ; 2011-08-23 16:48:25
    #EndRegion - TimeStamp
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WebcamConstants.au3>

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

    ; =============================================================================
    ; Titel..........: SimpleWebcamApp.au3
    ; Beschreibung...: Webcam Ein/Aus, Live/Standbild, Schnappschuß (*.bmp) ==> im @ScriptDir
    ; Version AutoIt.: 3.3.6.1
    ; Author.........: BugFix
    ; ...............: Webcam Funktionen von Ludocus und pierrotm777
    ; ...............: Modifiziert BugFix
    ; =============================================================================

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

    Opt('GuiOnEventMode', 1)
    Opt('MustDeclareVars', 1)

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

    Global $avicap = DllOpen("avicap32.dll")
    Global $user = DllOpen("user32.dll")

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

    Global $hWnd_Camera, $idCam, $isCamera = 0, $btCamera, $btFoto, $rLive

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

    $hWnd_Camera = GUICreate('Webcam', 340, 348, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_exit', $hWnd_Camera)
    ; == Capturing für Fenster aktivieren:
    $idCam = _WebcamOpen($hWnd_Camera, 10, 10, 320, 240)
    $btFoto = GUICtrlCreateButton('Foto', 10, 260, 48, 22)
    GUICtrlSetOnEvent(-1, '_Snap')
    GUICtrlSetState(-1, $GUI_DISABLE)
    $btCamera = GUICtrlCreateButton('Kamera EIN', 10, 315, 120, 25)
    GUICtrlSetOnEvent(-1, '_CameraOnOff')
    GUICtrlSetColor(-1, 0x008000)
    GUICtrlSetFont(-1, 10, 600)
    $rLive = GUICtrlCreateRadio('', 155, 322, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetOnEvent(-1, '_PreviewOnOff')
    ControlFocus($hWnd_Camera, '', $rLive)
    GUICtrlCreateLabel('Live', 175, 319, 60)
    GUICtrlSetColor(-1, 0x008000)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlCreateRadio('', 230, 322, 17)
    GUICtrlSetOnEvent(-1, '_PreviewOnOff')
    GUICtrlCreateLabel('Standbild', 250, 319, 75)
    GUICtrlSetColor(-1, 0x008000)
    GUICtrlSetFont(-1, 10, 600)

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

    WinSetOnTop($hWnd_Camera, '', 1)
    GUISetState(@SW_SHOW, $hWnd_Camera)

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

    While True
    Sleep(50)
    WEnd

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

    Func _exit()
    _WebcamClose($idCam)
    Exit
    EndFunc

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

    Func _CameraOnOff()
    ; == Kamera (de)aktivieren - Standbild An/Aus
    If $isCamera = 0 Then
    GUICtrlSetData($btCamera, 'Kamera AUS')
    GUICtrlSetColor($btCamera, 0xFF0000)
    GUICtrlSetState($btFoto, $GUI_ENABLE)
    _WebcamActive($idCam)
    Else
    GUICtrlSetData($btCamera, 'Kamera EIN')
    GUICtrlSetColor($btCamera, 0x008000)
    GUICtrlSetState($btFoto, $GUI_DISABLE)
    _WebcamInactive($idCam)
    EndIf
    $isCamera = BitXOR($isCamera, 1)
    If $isCamera = 1 Then _PreviewOnOff()
    EndFunc

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

    Func _PreviewOnOff()
    ; == Livebild An/Aus
    If Not $isCamera Then
    _WebcamActive($idCam)
    $isCamera = 1
    GUICtrlSetData($btCamera, 'Kamera AUS')
    GUICtrlSetColor($btCamera, 0xFF0000)
    GUICtrlSetState($btFoto, $GUI_ENABLE)
    EndIf
    If BitAND(GUICtrlRead($rLive), $GUI_CHECKED) Then
    _WebcamPreview($idCam)
    Else
    _WebcamStopPreview($idCam)
    EndIf
    EndFunc

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

    Func _Snap()
    Local $sFile = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & '.bmp', $sSave, $mb
    If _WebcamSnap($idCam, @ScriptDir & '\' & $sFile) = 1 Then
    WinSetOnTop($hWnd_Camera, '', 0)
    While True
    Do
    $sSave = InputBox('Schnappschuß speichern', 'Bitte Dateinamen eingeben')
    If $sSave = '' Then $mb = MsgBox(262180, 'Kein Dateiname vergeben', 'Eingabe Wiederholen?')
    Until $sSave <> '' Or $mb = 7
    If $sSave = '' Or $mb = 7 Then
    WinSetOnTop($hWnd_Camera, '', 1)
    FileDelete(@ScriptDir & '\' & $sFile)
    Return
    EndIf
    If StringRight($sSave, 4) <> '.bmp' Then $sSave &= '.bmp'
    If FileExists(@ScriptDir & '\' & $sSave) Then
    MsgBox(262192, 'Fehler', $sSave & ' existiert bereits!', 3)
    Else
    ExitLoop
    EndIf
    WEnd
    FileMove(@ScriptDir & '\' & $sFile, @ScriptDir & '\' & $sSave)
    EndIf
    WinSetOnTop($hWnd_Camera, '', 1)
    EndFunc

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

    ; ==================== webcam - UDF von Ludocus, BugFix ==========================================================================================

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

    ;===============================================================================
    ; Description: Open's a webcam preview screen in your gui
    ; Syntax: _WebcamOpen($sHwnd, $sLeft, $sTop, $sWidth, $sHeight)
    ; Parameter(s): $sHwnd - The handle of the gui
    ; $sLeft - Left coord. of the preview screen
    ; $sTop - Top coord. of the preview screen
    ; $sWidth - Width of the preview screen
    ; $sHeight - Height of the preview screen
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns id needed for other controls
    ; On Failure - Returns -1
    ; Author(s): Ludocus
    ; Note(s): None
    ;===============================================================================
    Func _WebcamOpen($sHwnd, $sLeft, $sTop, $sWidth, $sHeight)
    Local $cap = DllCall($avicap, "int", "capCreateCaptureWindow", "str", "cap", "int", BitOR($WS_CHILD,$WS_VISIBLE), "int", $sLeft, "int", $sTop, "int", $sWidth, "int", $sHeight, "hwnd", $sHwnd, "int", 1)
    If @error Then Return -1
    Return $cap[0]
    EndFunc

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

    ;===============================================================================
    ; Description: Closes the preview screen created with _WebcamOpen
    ; Syntax: _WebcamClose($sId)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): None
    ;===============================================================================
    Func _WebcamClose($sId)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEW, "int", 0, "int", 0);ferme le preview
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_CALLBACK_FRAME, "int", 0, "int", 0);ajout
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_END, "int", 0, "int", 0)
    DllClose($user)
    If @error Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _WebcamActive
    ; Description......: Connects the capture driver for specified webcam-id (default 0) to the capture window (like camera switch on)
    ; shows freeze image
    ; Parameter(s).....: $sId - Id (returned from _WebcamOpen)
    ; $WebCamId - specified webcam-id (default 0)
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _WebcamActive($sId, $WebCamId=0)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_DRIVER_CONNECT, "int", $WebCamId , "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_SCALE, "int", 1, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_OVERLAY, "int", 1, "int", 0)
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _WebcamInactive
    ; Description......: Disonnects the capture driver from the capture window (like camera switch off)
    ; Parameter(s).....: $sId - Id (returned from _WebcamOpen)
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _WebcamInactive($sId)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _WebcamPreview
    ; Description......: shows live image in the capture window
    ; Parameter(s).....: $sId - Id (returned from _WebcamOpen)
    ; Requirement(s)...: Run _WebcamActive before
    ; Author(s)........: Ludocus
    ;===============================================================================
    Func _WebcamPreview($sId)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEW, "int", 1, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEWRATE, "int", 15, "int", 0)
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _WebcamStopPreview
    ; Description......: stops the live image in the capture window
    ; Parameter(s).....: $sId - Id (returned from _WebcamOpen)
    ; Author(s)........: Ludocus
    ;===============================================================================
    Func _WebcamStopPreview($sId)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEW, "int", 0, "int", 0)
    EndFunc

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

    ;===============================================================================
    ; Description: Creates a Snapshot from a webcam
    ; Syntax: _WebcamSnap($sId, $sFile)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; $sFile - File to save the snapshot to (*.bmp)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): None
    ;===============================================================================
    Func _WebcamSnap($sId, $sFile)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_GRAB_FRAME_NOSTOP, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_FILE_SAVEDIBA, "int", 0, "str", $sFile)
    If @error Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc

    [/autoit]
    MyWebcam (v1.0)
    Code
    Die Datei ist etwas groß, deshalb nur im Anhang.
    Web_Cam.au3 (v0.1)
    [autoit]

    #Region - TimeStamp
    ; 2011-09-13 18:49:24 v 0.1
    #EndRegion - TimeStamp

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

    #include-once
    #include <WindowsConstants.au3>
    #include <WebcamConstants.au3>

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

    ;===============================================================================
    ; Description: Open's a webcam capturing window in your gui
    ; Syntax: _WebcamOpen($sHwnd, $sLeft, $sTop, $sWidth, $sHeight)
    ; Parameter(s): $sHwnd - The handle of the gui
    ; $sLeft - Left coord. of the preview screen
    ; $sTop - Top coord. of the preview screen
    ; $sWidth - Width of the preview screen
    ; $sHeight - Height of the preview screen
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns id needed for other controls
    ; On Failure - Returns -1
    ; Author(s): Ludocus
    ; Modified: BugFix ( [email='bugfix@autoit.de'][/email] )
    ; Note(s): Sets the "fYield" param to 1, that allows user action during capturing (controls not frozen now)
    ;===============================================================================
    Func _WebcamOpen($sHwnd, $sLeft, $sTop, $sWidth, $sHeight)
    Local $cap = DllCall($Dll_avicap, "int", "capCreateCaptureWindow", "str", "cap", "int", BitOR($WS_CHILD,$WS_VISIBLE), "int", $sLeft, "int", $sTop, "int", $sWidth, "int", $sHeight, "hwnd", $sHwnd, "int", 1)
    If @error Then Return -1
    Local $tCAPTUREPARMS = __CAP_GET_SEQUENCE_SETUP($cap[0])
    If @error Then Return -1
    __CAP_SET_SEQUENCE_SETUP($cap[0], $tCAPTUREPARMS)
    If @error Then Return -1
    Return $cap[0]
    EndFunc

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

    ;===============================================================================
    ; Description: Closes the preview screen created with _WebcamOpen
    ; Syntax: _WebcamClose($sId)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): None
    ;===============================================================================
    Func _WebcamClose($sId)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEW, "int", 0, "int", 0);ferme le preview
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_CALLBACK_FRAME, "int", 0, "int", 0);ajout
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_END, "int", 0, "int", 0)
    DllClose($Dll_user)
    If @error Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _WebcamActive
    ; Description......: Connects the capture driver for specified webcam-id (default 0) to the capture window (like camera switch on)
    ; shows freeze image
    ; Parameter(s).....: $sId - Id (returned from _WebcamOpen)
    ; $WebCamId - specified webcam-id (default 0)
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _WebcamActive($sId, $WebCamId=0)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_DRIVER_CONNECT, "int", $WebCamId , "int", 0)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_SCALE, "int", 1, "int", 0)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_OVERLAY, "int", 1, "int", 0)
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _WebcamInactive
    ; Description......: Disonnects the capture driver from the capture window (like camera switch off)
    ; Parameter(s).....: $sId - Id (returned from _WebcamOpen)
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _WebcamInactive($sId)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _WebcamPreview
    ; Description......: shows live image in the capture window
    ; Parameter(s).....: $sId - Id (returned from _WebcamOpen)
    ; Requirement(s)...: Run _WebcamActive before
    ; Author(s)........: Ludocus
    ;===============================================================================
    Func _WebcamPreview($sId)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEW, "int", 1, "int", 0)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEWRATE, "int", 15, "int", 0)
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _WebcamStopPreview
    ; Description......: stops the live image in the capture window
    ; Parameter(s).....: $sId - Id (returned from _WebcamOpen)
    ; Author(s)........: Ludocus
    ;===============================================================================
    Func _WebcamStopPreview($sId)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEW, "int", 0, "int", 0)
    EndFunc

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

    ;===============================================================================
    ; Description: Creates a Snapshot from a webcam
    ; Syntax: _WebcamSnap($sId, $sFile)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)

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

    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): None
    ;===============================================================================
    Func _WebcamSnap($sId, $sFile)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_GRAB_FRAME_NOSTOP, "int", 0, "int", 0)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_FILE_SAVEDIBA, "int", 0, "str", $sFile)
    If @error Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc

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

    ;===============================================================================
    ; Description: Starts recording the webcam to file
    ; Syntax: _WebcamRecordStart($sId, $sFile)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; $sFile - File to save the movie to (*.avi)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Modified: BugFix ( [email='bugfix@autoit.de'][/email] )
    ; Note(s): Stop recording by: _WebcamRecordStop($Id, $sFile)
    ;===============================================================================
    Func _WebcamRecordStart($sId, $sFile)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_FILE_SET_CAPTURE_FILEA, "int", 0, "str", $sFile)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SEQUENCE, "int", 0, "int", 0)
    If @error Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc

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

    ;===============================================================================
    ; Description: Stops recording
    ; Syntax: _WebcamRecordStop($sId)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): None
    ;===============================================================================
    Func _WebcamRecordStop($sId)
    DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_STOP, "int", 0, "int", 0)
    If @error Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc

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

    ;===============================================================================
    ; Description: De/Activate audio capturing
    ; Syntax: _WebcamAudioSet($sId [, $iOn])
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; $iOn - 0 or 1 (Default) to switch Off/On
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
    ; Note(s): By default in SEQUENCE_SETUP is capturing active
    ;===============================================================================
    Func _WebcamAudioSet($sId, $iOn=1)
    If $iOn <> 1 Then $iOn = 0
    __CAP_SET_SEQUENCE_SETUP($sId, __CAP_GET_SEQUENCE_SETUP($sId), 'fCaptureAudio=' & $iOn)
    If @error Then Return 0
    Return 1
    EndFunc

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

    ; == helper functions:
    ;===============================================================================
    ; Description: Reads the values of current capture parameter
    ; Syntax: __CAP_GET_SEQUENCE_SETUP($sId)
    ; Return Value(s): On Success - Returns the CAPTUREPARMS-structure
    ; On Failure - Returns 0, set error
    ; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func __CAP_GET_SEQUENCE_SETUP($sId)
    Local $aParamStruc[24] = [ _
    'dwRequestMicroSecPerFrame','fMakeUserHitOKToCapture','wPercentDropForError','fYield','dwIndexSize','wChunkGranularity','fUsingDOSMemory','wNumVideoRequested', _
    'fCaptureAudio','wNumAudioRequested','vKeyAbort','fAbortLeftMouse','fAbortRightMouse','fLimitEnabled','wTimeLimit','fMCIControl','fStepMCIDevice','dwMCIStartTime', _
    'dwMCIStopTime','fStepCaptureAt2x','wStepCaptureAverageFrames','dwAudioBufferSize','fDisableWriteCache','AVStreamMaster']
    Local $tCAPTUREPARMS = DllStructCreate($tagCAPTUREPARMS), $pCAPTUREPARMS = DllStructGetPtr($tCAPTUREPARMS)
    Local $ret = DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_GET_SEQUENCE_SETUP, "WPARAM", DllStructGetSize($tCAPTUREPARMS), "LPARAM", $pCAPTUREPARMS)
    If @error Then
    Return SetError(1,0,0)
    Else
    ;~ For $i = 0 To 23
    ;~ ConsoleWrite($aParamStruc[$i] & @TAB & DllStructGetData($tCAPTUREPARMS, $aParamStruc[$i]) & @CRLF)
    ;~ Next
    Return $tCAPTUREPARMS
    EndIf
    EndFunc

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

    ;===============================================================================
    ; Description: Sets one or more values in current capture parameter
    ; Syntax: __CAP_SET_SEQUENCE_SETUP($sId, $tCAPTUREPARMS [, $vParams=0])
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; $tCAPTUREPARMS - structure from __CAP_GET_SEQUENCE_SETUP
    ; $vParams - string: "Param=value"; for more than one param use: "Param1=value|Param2=value|Param3=value|.."
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0, set error
    ; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
    ; Note(s): Meaning of all parameters: http://msdn.microsoft.com/en-us/library/…2(v=VS.85).aspx
    ;===============================================================================
    Func __CAP_SET_SEQUENCE_SETUP($sId, $tCAPTUREPARMS, $vParams=0) ; $vParams: Um nur einen Wert zu ändern "Parametername=Wert" übergeben, mehrere Werte mit "|" abtrennen
    Local $aParamStruc[24] = [ _
    'dwRequestMicroSecPerFrame','fMakeUserHitOKToCapture','wPercentDropForError','fYield','dwIndexSize','wChunkGranularity','fUsingDOSMemory','wNumVideoRequested', _
    'fCaptureAudio','wNumAudioRequested','vKeyAbort','fAbortLeftMouse','fAbortRightMouse','fLimitEnabled','wTimeLimit','fMCIControl','fStepMCIDevice','dwMCIStartTime', _
    'dwMCIStopTime','fStepCaptureAt2x','wStepCaptureAverageFrames','dwAudioBufferSize','fDisableWriteCache','AVStreamMaster']
    If $vParams == 0 Then
    Local $aParam2Set[1] = ['fYield=1'] ; == Default: Erlaubt Nutzereingaben während Capturing
    Else
    Local $aParam2Set = StringSplit($vParams, '|', 2)
    EndIf
    Local $aSplit
    For $i = 0 To UBound($aParam2Set) -1
    $aSplit = StringSplit($aParam2Set[$i], '=')
    If $aSplit[0] <> 2 Then ContinueLoop
    DllStructSetData($tCAPTUREPARMS, $aSplit[1], $aSplit[2])
    Next
    Local $pCAPTUREPARMS = DllStructGetPtr($tCAPTUREPARMS)
    Local $ret = DllCall($Dll_user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_SEQUENCE_SETUP, "wparam", DllStructGetSize($tCAPTUREPARMS), "lparam", $pCAPTUREPARMS)
    If @error Then
    Return SetError(1,0,0)
    Else
    ;~ For $i = 0 To 23
    ;~ ConsoleWrite($aParamStruc[$i] & @TAB & DllStructGetData($tCAPTUREPARMS, $aParamStruc[$i]) & @CRLF)
    ;~ Next
    Return 1
    EndIf
    EndFunc

    [/autoit]

    Dateien

    Web_Cam[0.1].au3 12,49 kB – 1.213 Downloads WebcamConstants[0.2].au3 5,4 kB – 1.278 Downloads MyWebcam[1.0].au3 117,77 kB – 1.291 Downloads
  • Kamera läßt sich im Skript nach Deaktivieren nicht erneut einschalten

    • BugFix
    • 23. August 2011 um 11:24
    Zitat von campweb

    Lösche einfach mit der Funktion das Kameraobjekt.

    Das tue ich doch:

    [autoit]

    _WebcamClose($idCam)

    [/autoit]
    Zitat von campweb

    Wenn du dann unbedingt den schwazren kasten haben willst, zeichne ich als Grafik.

    Wozu Grafik, wenn ich Hintergrund schwarz haben will? Ein schwarzes Rectangle als Grafik zu zeichnen macht doch wohl wenig Sinn (die enthaltenen Pictures sind Controls mit entsprechendem Verhalten beim Klick - Grafik macht also null Sinn).


    Zitat von campweb

    Ein kleiner Verbesserungvorschlag: Du kannt über die TreiberID zwischen den angeschlossenen Kameras wechseln. Das würde ich noch einbauen.

    ===>

    Zitat von BugFix

    Es ist noch nicht alles fertig


    Edit
    Hab den Fehler entdeckt: Die UDF ist etwas zu "undetailliert" erstellt, sodass Einzelfunktionen nicht wirksam werden konnten. Habe die Funktionen entsprechend umgebaut und somit auch die Funktionsvielfalt erweitert.
    Ich werde das noch etwas vervollständigen und dann als Skript-Bsp. posten.

  • Kamera läßt sich im Skript nach Deaktivieren nicht erneut einschalten

    • BugFix
    • 23. August 2011 um 01:43

    Hi,
    ich habe hier eine kleine Oberfläche für meine Webcam erstellt. (Es ist noch nicht alles fertig)
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Mein Problem:
    Wenn ich die Kamera aktiviere (das funktioniert) anschließend deaktiviere und erneut aktivieren möchte, läßt sie sich nicht mehr einschalten.
    Passiert in der Funktion _CameraOnOff() ab Zeile 338.
    Einen Teil der Daten habe ich im Spoiler gekürzt - im Anhang ist alles komplett.
    Hat jemand eine Idee?

    Spoiler anzeigen
    [autoit]

    #Region - TimeStamp
    ; 2011-08-23 01:20:46 v 0.2
    #EndRegion - TimeStamp

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

    ; =============================================================================
    ; Titel..........: MyWebcam.au3
    ; Beschreibung...: Webcam live, Aufzeichnung/Wiedergabe Schnappschuß/Video
    ; Version AutoIt.: 3.3.6.1
    ; Author.........: BugFix
    ; ...............: Webcam Funktionen von Ludocus und pierrotm777
    ; =============================================================================

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

    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>

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

    Opt('GuiOnEventMode', 1)
    Opt('MustDeclareVars', 1)

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

    Global Const $WM_CAP_START = 0x400
    Global Const $WM_CAP_UNICODE_START = $WM_CAP_START +100
    Global Const $WM_CAP_PAL_SAVEA = $WM_CAP_START + 81
    Global Const $WM_CAP_PAL_SAVEW = $WM_CAP_UNICODE_START + 81
    Global Const $WM_CAP_UNICODE_END = $WM_CAP_PAL_SAVEW
    Global Const $WM_CAP_ABORT = $WM_CAP_START + 69
    Global Const $WM_CAP_DLG_VIDEOCOMPRESSION = $WM_CAP_START + 46
    Global Const $WM_CAP_DLG_VIDEODISPLAY = $WM_CAP_START + 43
    Global Const $WM_CAP_DLG_VIDEOFORMAT = $WM_CAP_START + 41
    Global Const $WM_CAP_DLG_VIDEOSOURCE = $WM_CAP_START + 42
    Global Const $WM_CAP_DRIVER_CONNECT = $WM_CAP_START + 10
    Global Const $WM_CAP_DRIVER_DISCONNECT = $WM_CAP_START + 11
    Global Const $WM_CAP_DRIVER_GET_CAPS = $WM_CAP_START + 14
    Global Const $WM_CAP_DRIVER_GET_NAMEA = $WM_CAP_START + 12
    Global Const $WM_CAP_DRIVER_GET_NAMEW = $WM_CAP_UNICODE_START + 12
    Global Const $WM_CAP_DRIVER_GET_VERSIONA = $WM_CAP_START + 13
    Global Const $WM_CAP_DRIVER_GET_VERSIONW = $WM_CAP_UNICODE_START + 13
    Global Const $WM_CAP_EDIT_COPY = $WM_CAP_START + 30
    Global Const $WM_CAP_END = $WM_CAP_UNICODE_END
    Global Const $WM_CAP_FILE_ALLOCATE = $WM_CAP_START + 22
    Global Const $WM_CAP_FILE_GET_CAPTURE_FILEA = $WM_CAP_START + 21
    Global Const $WM_CAP_FILE_GET_CAPTURE_FILEW = $WM_CAP_UNICODE_START + 21
    Global Const $WM_CAP_FILE_SAVEASA = $WM_CAP_START + 23
    Global Const $WM_CAP_FILE_SAVEASW = $WM_CAP_UNICODE_START + 23
    Global Const $WM_CAP_FILE_SAVEDIBA = $WM_CAP_START + 25
    Global Const $WM_CAP_FILE_SAVEDIBW = $WM_CAP_UNICODE_START + 25
    Global Const $WM_CAP_FILE_SET_CAPTURE_FILEA = $WM_CAP_START + 20
    Global Const $WM_CAP_FILE_SET_CAPTURE_FILEW = $WM_CAP_UNICODE_START + 20
    Global Const $WM_CAP_FILE_SET_INFOCHUNK = $WM_CAP_START + 24
    Global Const $WM_CAP_GET_AUDIOFORMAT = $WM_CAP_START + 36
    Global Const $WM_CAP_GET_CAPSTREAMPTR = $WM_CAP_START + 1
    Global Const $WM_CAP_GET_MCI_DEVICEA = $WM_CAP_START + 67
    Global Const $WM_CAP_GET_MCI_DEVICEW = $WM_CAP_UNICODE_START + 67
    Global Const $WM_CAP_GET_SEQUENCE_SETUP = $WM_CAP_START + 65
    Global Const $WM_CAP_GET_STATUS = $WM_CAP_START + 54
    Global Const $WM_CAP_GET_USER_DATA = $WM_CAP_START + 8
    Global Const $WM_CAP_GET_VIDEOFORMAT = $WM_CAP_START + 44
    Global Const $WM_CAP_GRAB_FRAME = $WM_CAP_START + 60
    Global Const $WM_CAP_GRAB_FRAME_NOSTOP = $WM_CAP_START + 61
    Global Const $WM_CAP_PAL_AUTOCREATE = $WM_CAP_START + 83
    Global Const $WM_CAP_PAL_MANUALCREATE = $WM_CAP_START + 84
    Global Const $WM_CAP_PAL_OPENA = $WM_CAP_START + 80
    Global Const $WM_CAP_PAL_OPENW = $WM_CAP_UNICODE_START + 80
    Global Const $WM_CAP_PAL_PASTE = $WM_CAP_START + 82
    Global Const $WM_CAP_SEQUENCE = $WM_CAP_START + 62
    Global Const $WM_CAP_SEQUENCE_NOFILE = $WM_CAP_START + 63
    Global Const $WM_CAP_SET_AUDIOFORMAT = $WM_CAP_START + 35
    Global Const $WM_CAP_SET_CALLBACK_CAPCONTROL = $WM_CAP_START + 85
    Global Const $WM_CAP_SET_CALLBACK_ERRORA = $WM_CAP_START + 2
    Global Const $WM_CAP_SET_CALLBACK_ERRORW = $WM_CAP_UNICODE_START + 2
    Global Const $WM_CAP_SET_CALLBACK_FRAME = $WM_CAP_START + 5
    Global Const $WM_CAP_SET_CALLBACK_STATUSA = $WM_CAP_START + 3
    Global Const $WM_CAP_SET_CALLBACK_STATUSW = $WM_CAP_UNICODE_START + 3
    Global Const $WM_CAP_SET_CALLBACK_VIDEOSTREAM = $WM_CAP_START + 6
    Global Const $WM_CAP_SET_CALLBACK_WAVESTREAM = $WM_CAP_START + 7
    Global Const $WM_CAP_SET_CALLBACK_YIELD = $WM_CAP_START + 4
    Global Const $WM_CAP_SET_MCI_DEVICEA = $WM_CAP_START + 66
    Global Const $WM_CAP_SET_MCI_DEVICEW = $WM_CAP_UNICODE_START + 66
    Global Const $WM_CAP_SET_OVERLAY = $WM_CAP_START + 51
    Global Const $WM_CAP_SET_PREVIEW = $WM_CAP_START + 50
    Global Const $WM_CAP_SET_PREVIEWRATE = $WM_CAP_START + 52
    Global Const $WM_CAP_SET_SCALE = $WM_CAP_START + 53
    Global Const $WM_CAP_SET_SCROLL = $WM_CAP_START + 55
    Global Const $WM_CAP_SET_SEQUENCE_SETUP = $WM_CAP_START + 64
    Global Const $WM_CAP_SET_USER_DATA = $WM_CAP_START + 9
    Global Const $WM_CAP_SET_VIDEOFORMAT = $WM_CAP_START + 45
    Global Const $WM_CAP_SINGLE_FRAME = $WM_CAP_START + 72
    Global Const $WM_CAP_SINGLE_FRAME_CLOSE = $WM_CAP_START + 71
    Global Const $WM_CAP_SINGLE_FRAME_OPEN = $WM_CAP_START + 70
    Global Const $WM_CAP_STOP = $WM_CAP_START + 68

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

    Global $avicap = DllOpen("avicap32.dll")
    Global $user = DllOpen("user32.dll")

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

    #region - Iconsource
    ; registriert die Funktion "_DelBinaryTempFiles()", damit die temporär erstellten Dateien bei Beendigung wieder gelöscht werden
    OnAutoItExitRegister("_DelBinaryTempFiles")

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

    Local $bData[13] = [12]

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

    ; String mit den Binärdaten von: camera-web.ico
    $bData[1] &= "0x0000010001003030000000000000A82500001600000028000000300000006000000001002000000000000024000000000000000000000000000000000...."
    $bData[1] &= "000000000000000000000000000001000000050000000D000000170000001F1413103A33312CB9424240FF4E5150FF555857FF5A5D5CFF5E615FFF5F63...."
    $bData[1] &= "4E48FF4D4945FF3F3E3CFF40403EFF7C7C7BFFCBCBCBFFD4D4D4FFC8C8C8FFB9B9B9FFB8B8B8FFC3C3C3FFC6C6C6FFD1D1D1FFCFD0CFFF7A7C7AE...."
    $bData[1] &= "000000000000000000000000000000000000000000000000000000000000000000000000000000515553065D605E7D9FA1A0F8E0E0E0FFDCDCDCFFE0E...."
    $bData[1] &= "9694D6B4B7B6F8D7D6D5FFDDCBBDFFCBA78BFFC49A7AFFC39776FFC39675FFC39675FFC39776FFC49A7AFFCCA88BFFDECCBFFFD7D7D5FFB3B6B...."
    ; String mit den Binärdaten von: camera_photo1.gif
    $bData[2] &= "0x47494638396130003000F700000000001E4F65364E59384F5A38505B3B535D20516624546929596E2C5C72335D6F3F566031607636657A3B6172386...."
    $bData[2] &= "00270C6287513C4354CEC0850B6EA00639F802136C48820B14718B5D1401978B78C43527400146AC22164BDC64307D63102CEC424BD928C50B92A0...."
    ; String mit den Binärdaten von: camera_photo2.gif
    $bData[3] &= "0x47494638396130003000F700000000001E4F65364E59384F5A38505B3B535D20516624546929596E2C5C72335D6F3F566031607636657A3B6172386...."
    $bData[3] &= "00270C6287513C6354CEC0850B6EA00639F802136C48820B14718B5D1401978B78C43527400146AC22164BDC64307F63102CEC624BD928C50B92A00...."
    ; String mit den Binärdaten von: camera_video_rec0.gif
    $bData[4] &= "0x47494638396130003000F700000000000303030500050606060909090D0D0C001800091E09120E121212121612161515151919191D1D1D0E210E0033...."
    $bData[4] &= "86A2AC510C71046316D5880624370549666C5023DFD0C73CE4710F10CE631DD558C73CACE18D6F24431CF880C62EB6F14A6449E395C268454C6CE10...."
    ; String mit den Binärdaten von: camera_video_rec1.gif
    $bData[5] &= "0x47494638396130003000F700000000000500050606060B0B0B001800091E09120E121212121612161515151919191D1D1D0E210E003500043E041829...."
    $bData[5] &= "862EB0418D44A2610C5680E525C5801170E8631EF2B8C705E7B10E6CAC631ED9F8063824870FA6742395D438431494794929608417FEC80635A271CD...."
    ; String mit den Binärdaten von: camera_video_rec2.gif
    $bData[6] &= "0x47494638396130003000F700000000000500050606060B0B0B001800091E09120E121212121612161515151919191D1D1D0E210E003500043E041829...."
    $bData[6] &= "C6297B51862DB4B29550400246C0A18F79C8E31E129CC73AB0B18E7964E31BE0701C3E98D20D527E63176260E531A1C08420400417FEC80635A251C...."
    ; String mit den Binärdaten von: config_tool.gif
    $bData[7] &= "0x47494638396130003000F70000000000153E0C1F5B0A3B5F382668072A700E357C1833672E3975383D7C31437D1C4A7C2449484950524F515351595...."
    ; String mit den Binärdaten von: config_tool1.gif
    $bData[8] &= "0x47494638396130003000F70000000000153E0C1F5B0A3B5F382668072A700E357C1833672E3975383D7C31437D1C4A7C2449484950524F515351595...."
    ; String mit den Binärdaten von: folder_records.gif
    $bData[9] &= "0x47494638396130003000F7000000000062440E6365397F7624616F427A7C6B3E7ECA417CC118BA7824C6793DDB7F7EAD6F52D07E5E89AC5CB78571...."
    ; String mit den Binärdaten von: folder_records1.gif
    $bData[10] &= "0x47494638396130003000F7000000000062440E6365397F7624616F427A7C6B3E7ECA417CC118BA7824C6793DDB7F7EAD6F52D07E5E89AC5CB7857...."
    ; String mit den Binärdaten von: media_start.ico
    $bData[11] &= "0x0000010001003030000001002000A8250000160000002800000030000000600000000100200000000000004800000000000000000000000000000000...."
    $bData[11] &= "B43C7F6AB43C7F7CAA3DB6739C23D771B13DB6ADCCB3DB548DEEFD246DF2FF246DF1FF236DF1FF236CF2FF236CF1FF236BF1FF236BF1FF236BF1F...."
    $bData[11] &= "FDFFFFBCD4F8FE5C97F3FE468AF4FF347EF3FF2776F3FF2474F2FF2573F2FF2473F2FF2673F2FFA4ABA7F260613EE1A29234CCC2A65BE2A56102FF9...."
    $bData[11] &= "854AA1C8A85D91C19149F3A56000BE8F8B34FF768522DB6FB03B856AB43C7F848C5DBF328BEAFF298CF7FF298CF7FF298CF7FF298BF6FF298BF6FF...."
    $bData[11] &= "A7D4FF6EABE7FF68ADF0FF68ADF0FF6EADEBFF7FADDFFF97ADC9FDAEAAACF7B8A490EEBDA883E6CFB481E2D5B782E1D5B782E1D5B782E1D5B782...."
    ; String mit den Binärdaten von: media_select.ico
    $bData[12] &= "0x0000010001003030000001002000A8250000160000002800000030000000600000000100200000000000004800000000000000000000000000000000...."
    $bData[12] &= "DDF4FF7ADFF7FF78DEF7FF76DDF7FF74DCF6FF73DCF6FF72DCF6FF9FD2E6FF88A1B0FF7A909DFF51636CFF6E7A81FF7FA2AFFF63AEC2FF5EAEC4FF...."
    $bData[12] &= "E4EAFFBAE5EBFFB9E4EBFFC5E6ECFFCDEAECFFCCE9ECFFCCE8EBFFD6E6E8D8F2ECE7A3F1EBE5AAF4EDE3AFE5DBD0D8BBB9B8FE929293F46561614..."
    $bData[12] &= "0000000000000000000000000000000000000000000000B3E0F1FFB0F3FFFFB0F1FEFFB0F6FFFFB2F7FFFFB2F7FFFFB2F7FFFFB2F7FFFFB3F7FFFFD7F...."
    $bData[12] &= "E4F4FF99E5F5FF9FE8F6FFA9EBF7FFB2EDF8FFB9EFF9FFC5F2FBFFCCF3FCFFCCF4FBFFCBF3FBFFC5F3FBFFC1F2FBFFBDF1FBFF9EEFFCFF000000000...."

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

    ; erstellt im TEMPDIR die Datei/-en aus allen vorhandenen $bData Variablen
    Dim $bDatanames[12] = ["camera-web.ico","camera_photo1.gif","camera_photo2.gif","camera_video_rec0.gif","camera_video_rec1.gif","camera_video_rec2.gif","config_tool.gif","config_tool1.gif","folder_records.gif","folder_records1.gif","media_start.ico","media_select.ico"]
    For $i = 1 To $bData[0]
    Local $sFile = @ScriptDir & "\" & $bDatanames[$i -1]
    Local $hFileOut = FileOpen($sFile, 2+8+16)
    FileWrite($hFileOut, Binary($bData[$i]))
    FileClose($hFileOut)
    Next

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

    Func _DelBinaryTempFiles()
    For $i = 1 To $bData[0] - 1
    FileDelete(@ScriptDir & "\" & $bDatanames[$i - 1])
    Next
    EndFunc
    #endregion - Iconsource

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

    Global $pic_Photo1 = @ScriptDir & '\' & $bDatanames[1]
    Global $pic_Photo2 = @ScriptDir & '\' & $bDatanames[2]
    Global $pic_Video0 = @ScriptDir & '\' & $bDatanames[3]
    Global $pic_Video1 = @ScriptDir & '\' & $bDatanames[4]
    Global $pic_Video2 = @ScriptDir & '\' & $bDatanames[5]
    Global $pic_Config = @ScriptDir & '\' & $bDatanames[6]
    Global $pic_Config1 = @ScriptDir & '\' & $bDatanames[7]
    Global $pic_Records = @ScriptDir & '\' & $bDatanames[8]
    Global $pic_Records1 = @ScriptDir & '\' & $bDatanames[9]
    Global $icon_MediaRun = @ScriptDir & '\' & $bDatanames[10]
    Global $icon_MediaSel = @ScriptDir & '\' & $bDatanames[11]
    Global $aSavePath[2] = [@HomeDrive & @HomePath,@HomeDrive & @HomePath]
    Global $hWnd_Camera, $hWnd_Config, $hWnd_Records, $fRecord_active = False
    Global $MyWebcamApp_INI = @ScriptDir & '\MyWebcamApp.INI'
    If FileExists($MyWebcamApp_INI) Then
    $aSavePath[0] = IniRead($MyWebcamApp_INI, 'pathes', 'snap', @HomeDrive & @HomePath)
    $aSavePath[1] = IniRead($MyWebcamApp_INI, 'pathes', 'video', @HomeDrive & @HomePath)
    EndIf

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

    Global $idCam, $isCamera = 0, $picPhoto, $picVideo, $picRecord, $picConfig, $rVideo, $inPath, $inPathSnap, $inPathVideo, $btCamera

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

    #region - Webcam Fenster
    $hWnd_Camera = GUICreate('Webcam', 340, 348, -1, -1)
    GUISetIcon(@ScriptDir & '\' & $bDatanames[0])
    GUISetBkColor(0x000000)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_exit', $hWnd_Camera)
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_MDown', $hWnd_Camera)
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_MUp', $hWnd_Camera)
    GUICtrlCreateGroup('', 8, 2, 324, 250)
    GUICtrlCreateGroup('', -99, -99, 1, 1)
    ;~ $idCam = _WebcamOpen($hWnd_Camera, 10, 10, 320, 240)
    $picPhoto = GUICtrlCreatePic($pic_Photo1, 10, 260, 48, 48)
    $picVideo = GUICtrlCreatePic($pic_Video0, 99, 260, 48, 48)
    $picRecord = GUICtrlCreatePic($pic_Records, 188, 260, 48, 48)
    $picConfig = GUICtrlCreatePic($pic_Config, 278, 260, 48, 48)
    $btCamera = GUICtrlCreateButton('Kamera EIN', 110, 315, 120, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetOnEvent(-1, '_CameraOnOff')
    GUICtrlSetColor(-1, 0x008000)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetFont(-1, 10, 600)
    #endregion

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

    #region - Records Fenster
    $hWnd_Records = GUICreate("Aufzeichnungen", 340, 250, 285, 129)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_HideRecords', $hWnd_Records)
    GUICtrlCreateGroup(" Datentyp ", 16, 16, 305, 121)
    GUICtrlCreateRadio("Schnappschuß", 40, 48, 113, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $rVideo = GUICtrlCreateRadio("Video", 40, 88, 113, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $inPath = GUICtrlCreateInput("", 16, 150, 305, 21)
    GUICtrlCreateButton("", 40, 185, 48, 48, $BS_ICON)
    GUICtrlSetOnEvent(-1, '_SelectFile')
    GUICtrlSetImage(-1, $icon_MediaSel)
    GUICtrlCreateButton("", 252, 185, 48, 48, $BS_ICON)
    GUICtrlSetOnEvent(-1, '_PlayFile')
    GUICtrlSetImage(-1, $icon_MediaRun)
    #endregion

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

    #region - Config Fenster
    $hWnd_Config = GUICreate("Standardpfade", 340, 200, 285, 129)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_HideConfig', $hWnd_Config)
    GUICtrlCreateLabel('Schnappschuß', 10, 30)
    GUICtrlCreateButton('', 313, 30, 17, 17)
    GUICtrlSetOnEvent(-1, '_SelectFolderSnap')
    $inPathSnap = GUICtrlCreateInput($aSavePath[0], 10, 60, 320, 21)
    GUICtrlCreateLabel('Video', 10, 110)
    GUICtrlCreateButton('', 313, 110, 17, 17)
    GUICtrlSetOnEvent(-1, '_SelectFolderVideo')
    $inPathVideo = GUICtrlCreateInput($aSavePath[1], 10, 140, 320, 21)
    #endregion

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

    WinSetOnTop($hWnd_Camera, '', 1)
    GUISetState(@SW_SHOW, $hWnd_Camera)

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

    While True
    Sleep(50)
    WEnd

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

    Func _exit()
    If $fRecord_active Then ; Aufzeichnung läuft noch
    _WebcamRecordStop($idCam)
    _CameraOnOff()
    EndIf
    Exit
    EndFunc

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

    Func _MDown()
    Local $cursor = GUIGetCursorInfo($hWnd_Camera)
    Switch $cursor[4]
    Case $picPhoto
    GUICtrlSetImage($picPhoto, $pic_Photo2)
    Case $picVideo
    If Not $fRecord_active Then
    $fRecord_active = True
    Else
    _WebcamRecordStop($idCam)
    AdlibUnRegister('_ToggleRecordPict')
    AdlibUnRegister('_SetTitle')
    $fRecord_active = False
    GUICtrlSetImage($picVideo, $pic_Video0)
    EndIf
    Case $picConfig
    GUICtrlSetImage($picConfig, $pic_Config1)
    Case $picRecord
    GUICtrlSetImage($picRecord, $pic_Records1)
    EndSwitch
    EndFunc

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

    Func _MUp()
    Local $cursor = GUIGetCursorInfo($hWnd_Camera), $sFile, $sSave, $mb
    Switch $cursor[4]
    Case $picPhoto
    GUICtrlSetImage($picPhoto, $pic_Photo1)
    Local $sFile = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & '.bmp'
    If _WebcamSnap($idCam, $aSavePath[0] & '\' & $sFile) = 1 Then
    WinSetOnTop($hWnd_Camera, '', 0)
    While True
    Do
    $sSave = InputBox('Schnappschuß speichern', 'Bitte Dateinamen eingeben')
    If $sSave = '' Then $mb = MsgBox(262180, 'Kein Dateiname vergeben', 'Eingabe Wiederholen?')
    Until $sSave <> '' Or $mb = 7
    If $sSave = '' Or $mb = 7 Then
    WinSetOnTop($hWnd_Camera, '', 1)
    FileDelete($aSavePath[0] & '\' & $sFile)
    Return
    EndIf
    If StringRight($sSave, 4) <> '.bmp' Then $sSave &= '.bmp'
    If FileExists($aSavePath[0] & '\' & $sSave) Then
    MsgBox(262192, 'Fehler', $sSave & ' existiert bereits!', 3)
    Else
    ExitLoop
    EndIf
    WEnd
    FileMove($aSavePath[0] & '\' & $sFile, $aSavePath[0] & '\' & $sSave)
    EndIf
    WinSetOnTop($hWnd_Camera, '', 1)
    Case $picConfig
    GUICtrlSetImage($picConfig, $pic_Config)
    WinSetOnTop($hWnd_Camera, '', 0)
    WinSetOnTop($hWnd_Config, '', 1)
    GUISetState(@SW_SHOW, $hWnd_Config)
    Case $picVideo
    If Not $fRecord_active Then
    WinSetTitle($hWnd_Camera, '', 'Webcam')
    Else
    WinSetOnTop($hWnd_Camera, '', 0)
    ; == Video-Aufzeichnung funzt noch nicht ==
    ;~ While True
    ;~ Do
    ;~ $sSave = InputBox('Video speichern', 'Bitte Dateinamen eingeben')
    ;~ If $sSave = '' Then $mb = MsgBox(262180, 'Kein Dateiname vergeben', 'Eingabe Wiederholen?')
    ;~ Until $sSave <> '' Or $mb = 7
    ;~ If $sSave = '' Or $mb = 7 Then
    ;~ Return WinSetOnTop($hWnd_Camera, '', 1)
    ;~ EndIf
    ;~ If StringRight($sSave, 4) <> '.avi' Then $sSave &= '.avi'
    ;~ If FileExists($aSavePath[1] & '\' & $sSave) Then
    ;~ MsgBox(262192, 'Fehler', $sSave & ' existiert bereits!', 3)
    ;~ Else
    ;~ ExitLoop
    ;~ EndIf
    ;~ WEnd
    ;~ WinSetOnTop($hWnd_Camera, '', 1)
    GUICtrlSetImage($picVideo, $pic_Video1)
    AdlibRegister('_ToggleRecordPict', 500)
    AdlibRegister('_SetTitle', 1000)
    WinSetTitle($hWnd_Camera, '', 'Webcam [ Record-Time 00:00:00 ]')
    ;~ _WebcamRecordStart($sSave, $idCam)
    EndIf
    Case $picRecord
    GUICtrlSetImage($picRecord, $pic_Records)
    WinSetOnTop($hWnd_Camera, '', 0)
    WinSetOnTop($hWnd_Records, '', 1)
    GUISetState(@SW_SHOW, $hWnd_Records)
    EndSwitch
    EndFunc

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

    Func _CameraOnOff()
    If $isCamera = 0 Then
    GUICtrlSetData($btCamera, 'Kamera AUS')
    GUICtrlSetColor($btCamera, 0xFF0000)
    $idCam = _WebcamOpen($hWnd_Camera, 10, 10, 320, 240)
    Else
    GUICtrlSetData($btCamera, 'Kamera EIN')
    GUICtrlSetColor($btCamera, 0x008000)
    _WebcamClose($idCam)
    EndIf
    $isCamera = BitXOR($isCamera, 1)
    EndFunc

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

    Func _ToggleRecordPict()
    Local Static $iToggle = 0
    If $fRecord_active Then
    If $iToggle = 0 Then
    GUICtrlSetImage($picVideo, $pic_Video1)
    $iToggle = 1
    Else
    GUICtrlSetImage($picVideo, $pic_Video2)
    $iToggle = 0
    EndIf
    EndIf
    EndFunc

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

    Func _SetTitle()
    Local Static $sec = 0, $hour = 0, $min = 0
    $sec += 1
    Local $secShow, $minShow, $hourShow
    If $sec > 59 Then
    $min += 1
    $sec = 0
    EndIf
    If $min > 59 Then
    $hour += 1
    $min = 0
    EndIf
    If $hour > 23 Then
    $hour = 0
    EndIf
    WinSetTitle($hWnd_Camera, '', 'Webcam [ Record-Time ' & StringFormat('%02u', $hour) & ':' & StringFormat('%02u', $min) & ':' & StringFormat('%02u', $sec) & ' ]')
    EndFunc

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

    Func _HideRecords() ; Aufzeichnungsfenster ausblenden
    WinSetOnTop($hWnd_Records, '', 0)
    GUISetState(@SW_HIDE, $hWnd_Records)
    WinSetOnTop($hWnd_Camera, '', 1)
    EndFunc

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

    Func _SelectFile() ; Auswahl im Fenster Aufzeichnungen
    Local $aParam[2][2] = [['Schnappschuß wählen','Bilder (*.bmp)'], ['Video wählen','Videos (*.avi)']], $index = 0
    If BitAND(GUICtrlRead($rVideo), $GUI_CHECKED) Then $index = 1
    WinSetOnTop($hWnd_Records, '', 0)
    Local $sFile = FileOpenDialog($aParam[$index][0], $aSavePath[$index], $aParam[$index][1], 3)
    Local $error = @error
    WinSetOnTop($hWnd_Records, '', 1)
    If $error Then Return
    GUICtrlSetData($inPath, $sFile)
    EndFunc

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

    Func _PlayFile() ; Ausgewählte Datei wiedergeben
    Local $sFile = GUICtrlRead($inPath)
    If Not FileExists($sFile) Then Return
    WinSetOnTop($hWnd_Records, '', 0)
    ShellExecuteWait($sFile)
    WinSetOnTop($hWnd_Records, '', 1)
    GUICtrlSetData($inPath, '')
    EndFunc

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

    Func _HideConfig()
    Local $sSnap = GUICtrlRead($inPathSnap)
    If Not FileExists($sSnap) Then $sSnap = $aSavePath[0]
    Local $sVideo = GUICtrlRead($inPathVideo)
    If Not FileExists($sVideo) Then $sVideo = $aSavePath[1]
    If $sSnap <> $aSavePath[0] Or $sVideo <> $aSavePath[1] Then
    IniWrite($MyWebcamApp_INI, 'pathes', 'snap', $sSnap)
    IniWrite($MyWebcamApp_INI, 'pathes', 'video', $sVideo)
    EndIf
    WinSetOnTop($hWnd_Config, '', 0)
    GUISetState(@SW_HIDE, $hWnd_Config)
    WinSetOnTop($hWnd_Camera, '', 1)
    EndFunc

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

    Func _SelectFolderSnap()
    WinSetOnTop($hWnd_Config, '', 0)
    Local $sSnap = FileSelectFolder('Speicher-Ordner für Schnappschüsse wählen', $aSavePath[0], 7)
    Local $error = @error
    WinSetOnTop($hWnd_Config, '', 1)
    If $error Then Return
    GUICtrlSetData($inPathSnap, $sSnap)
    EndFunc

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

    Func _SelectFolderVideo()
    WinSetOnTop($hWnd_Config, '', 0)
    Local $sVideo = FileSelectFolder('Speicher-Ordner für Videos wählen', $aSavePath[1], 7)
    Local $error = @error
    WinSetOnTop($hWnd_Config, '', 1)
    If $error Then Return
    GUICtrlSetData($inPathVideo, $sVideo)
    EndFunc

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

    ; ==================== webcam - UDF von Ludocus ==========================================================================================

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

    ;===============================================================================
    ;
    ; Description: Open's a webcam preview screen in your gui
    ; Syntax: _WebcamOpen($sHwnd, $sLeft, $sTop, $sWidth, $sHeight)
    ; Parameter(s): $sHwnd - The handle of the gui
    ; $sLeft - Left coord. of the preview screen
    ; $sTop - Top coord. of the preview screen
    ; $sWidth - Width of the preview screen
    ; $sHeight - Height of the preview screen
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns id needed for other controls
    ; On Failure - Returns -1
    ; Author(s): Ludocus
    ; Note(s): None
    ;
    ;===============================================================================
    func _WebcamOpen($sHwnd, $sLeft, $sTop, $sWidth, $sHeight,$WebCamId=0)
    Local $cap = DllCall($avicap, "int", "capCreateCaptureWindow", "str", "cap", "int", BitOR($WS_CHILD,$WS_VISIBLE), "int", $sLeft, "int", $sTop, "int", $sWidth, "int", $sHeight, "hwnd", $sHwnd, "int", 1)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_DRIVER_CONNECT, "int", $WebCamId , "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_SCALE, "int", 1, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_OVERLAY, "int", 1, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_PREVIEW, "int", 1, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_PREVIEWRATE, "int", 1, "int", 0)
    if @error then return -1
    return $cap[0]
    EndFunc

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

    ;===============================================================================
    ;
    ; Description: Creates a Snapshot from a webcam
    ; Syntax: _WebcamSnap($sId, $sFile)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; $sFile - File to save the snapshot to (*.bmp)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): None
    ;
    ;===============================================================================
    Func _WebcamSnap($sId, $sFile)
    ; DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_CALLBACK_FRAME, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_GRAB_FRAME_NOSTOP, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_FILE_SAVEDIBA, "int", 0, "str", $sFile)
    if @error Then
    return 0
    Else
    return 1
    EndIf
    EndFunc

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

    ;===============================================================================
    ;
    ; Description: Closes the preview screen created with _WebcamOpen
    ; Syntax: _WebcamClose($sId)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): None
    ;
    ;===============================================================================
    Func _WebcamClose($sId)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_PREVIEW, "int", 0, "int", 0);ferme le preview
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_CALLBACK_FRAME, "int", 0, "int", 0);ajout
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_END, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)
    ;~ DllClose($avicap);ajout
    DllClose($user)
    if @error Then
    return 0
    Else
    return 1
    EndIf
    EndFunc

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

    ;===============================================================================
    ;
    ; Description: Starts recording the webcam to a file
    ; Syntax: _WebcamRecordStart($sFile, $sId)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; $sFile - File to save the movie to (*.avi)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): Stop recording by: _WebcamRecordStop($Id)
    ;
    ;===============================================================================
    Func _WebcamRecordStart($sFile, $sId)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_FILE_SET_CAPTURE_FILEA, "int", 0, "str", $sFile)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SEQUENCE, "int", 0, "int", 0)
    if @error Then
    return 0
    Else
    return 1
    EndIf

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

    EndFunc

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

    ;===============================================================================
    ;
    ; Description: Stops recording.
    ; Syntax: _WebcamRecordStop($sId)
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): Ludocus
    ; Note(s): None
    ;
    ;===============================================================================
    Func _WebcamRecordStop($sId)
    DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_STOP, "int", 0, "int", 0)
    if @error Then
    return 0
    Else
    return 1
    EndIf
    EndFunc

    [/autoit]

    Dateien

    MyWebcam[0.2].au3 116,69 kB – 222 Downloads mywebcam.jpg 42,59 kB – 0 Downloads
  • ColorConstantsEx - 400 klassische Farbbezeichnungen + Anzeigetool

    • BugFix
    • 22. August 2011 um 19:33
    Zitat von Cheater Dieter

    Nur eins verstehe ich nicht: Warum sind hinter vielen Farbnamen 1-3 Rechtecke zu finden?


    Kann ich nicht bestätigen, vielleicht solltest du die Einstellungen deines Browsers überprüfen.

  • ListView - Flackern verhindern

    • BugFix
    • 22. August 2011 um 13:13
    Zitat von Tweaky

    gibt es eine Möglichkeit das flackern des ListViews zu verhindern


    In diesem Falle würde ich sagen: Nein.
    Denn da du ununterbrochen im Abstand von 10ms den Befehl zum Eintragen neu aufrufst ändert sich die Ansicht deines Listview in der Zeitspanne 10ms+Zeitaufwand_aus_der_Funktion (zw. 3 u. 30 ms), sodass du im schlechtesten Fall eine Frequenz von etwa 25Hz erreichst - deutliches Flackern.

    Grml - es gibt ja bei Listview den Ex-Style: $LVS_EX_DOUBLEBUFFER - der tuts. ;)

  • Der "..." - Parameter

    • BugFix
    • 22. August 2011 um 09:58

    funkey hat ja schon den richtigen Verweis gegeben. Um die fixen Parameter auch zu erfassen, gehören diese natürlich mit in die interne Parameter-Table:

    Code
    function Test(arg1, arg2, ...)
    	local param = {arg1,arg2,...}
    	for index, wert in pairs(param) do
    		print(tostring(index).."="..tostring(wert)..", ")
    	end
    end
    
    
    Test(1,"hallo",5,4,"just a string")

    P.S. Du kannst natürlich immer deine Fragen zu LUA hier stellen. Spätestens wenn ich sie lese, werde ich mich auch um eine Antwort bemühen, wenn meine LUA-Kenntnisse das zulassen. ;)

  • Fremddateien "includen" (ohne FileInstall)

    • BugFix
    • 21. August 2011 um 15:54
    Zitat von Hugbert

    Wenn ich Ctrl + V drücke, kommt sowas dabei raus:


    Wie hast du es geschafft, dass das Skript nicht abbricht, obwohl du keine Datei übergeben hast?

    Edit: Fehler gefunden - Bei FileSelectFolder mit nur einer Datei wurde der Pfad falsch gebildet. ;)

  • Fremddateien "includen" (ohne FileInstall)

    • BugFix
    • 21. August 2011 um 14:16

    Neu v1.1 s. Startpost
    Einbau einer Modifikation von Schnuffel, mehrere Dateien übergeben, Mehrfachauswahl mit FileOpenDialog möglich.

  • ColorConstantsEx - 400 klassische Farbbezeichnungen + Anzeigetool

    • BugFix
    • 21. August 2011 um 00:42
    Zitat von Deep Thought

    Hast Du was dagegen, wenn ich mit Deinem Quellskript etwas bastelle.


    Kannst du natürlich verwenden (kleiner Verweis auf den Author wird dankend angenommen).

  • ColorConstantsEx - 400 klassische Farbbezeichnungen + Anzeigetool

    • BugFix
    • 20. August 2011 um 20:12

    Da fällt mir ein früheres Werk von mir ein: https://autoit.de/index.php?page…15398#post15398 ;)

  • SQL-Befehle in einer SQLite-Datenbank speichern

    • BugFix
    • 20. August 2011 um 17:17

    Syntax und Anwendung ist (m.W.) in allen Dialekten gleich: HowTo

  • SQL-Befehle in einer SQLite-Datenbank speichern

    • BugFix
    • 20. August 2011 um 16:44

    SQL-Statements lassen sich als VIEW abspeichern.

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™