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

Beiträge von Bitnugger

  • Progressbar

    • Bitnugger
    • 2. Juli 2018 um 15:00

    Das ist ja lustig... denn bei mir funktioniert dein Script auf Windows 10 nicht. Auf Windows 7 aber wohl... ha, was ist denn das wieder für ein Sch...

    ; Windows 7: Microsoft Windows [Version 6.1.7601]

    ; @AutoItVersion: 3.3.14.5, @OSType: WIN32_NT, @OSVersion: WIN_7, @OSArch: X64

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    ; Windows 10: Microsoft Windows [Version 10.0.17134.112]

    ; @AutoItVersion: 3.3.14.5, @OSType: WIN32_NT, @OSVersion: WIN_10, @OSArch: X64

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Auch diese Minimalbeispiel hier funktioniert nur auf Windows 7...

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    
    Example()
    
    Func Example()
        GUICreate("Marquee Progress Bar", 290, 90, -1, -1) ; An example of starting/stopping a scrolling marquee of a progress bar.
        Local $idProgress = GUICtrlCreateProgress(10, 10, 270, 20, $PBS_MARQUEE)
        Local $idStart = GUICtrlCreateButton("&Start", 10, 60, 70, 25)
        Local $idStop = GUICtrlCreateButton("S&top", 85, 60, 70, 25)
        Local $idExit = GUICtrlCreateButton("E&xit", 160, 60, 70, 25)
    
        GUISetState(@SW_SHOW)
    
        ; Loop until the user exits.
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE, $idExit
                    ExitLoop
    
                Case $idStart
                    ConsoleWrite('+ Start...' & @CRLF)
                    GUICtrlSendMsg($idProgress, $PBM_SETMARQUEE, 1, 50) ; Send the message $PBM_SETMARQUEE and wParam of 1 to start the scrolling marquee.
    
                Case $idStop
                    ConsoleWrite('- Stop...' & @CRLF)
                    GUICtrlSendMsg($idProgress, $PBM_SETMARQUEE, 0, 50) ; Send the message $PBM_SETMARQUEE and wParam of 0 to stop the scrolling marquee.
    
            EndSwitch
        WEnd
    EndFunc   ;==>Example
    Alles anzeigen

    Edit: Grrr... liegt an meinem Style mit WindowsBlind... ohne sieht es so aus... (Windows 10)

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Edit2: Workaround mit WindowsBlind

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    
    Example()
    
    Func Example()
        GUICreate("Marquee Progress Bar", 290, 90, -1, -1) ; An example of starting/stopping a scrolling marquee of a progress bar.
        Local $idProgress = GUICtrlCreateProgress(10, 10, 270, 20, $PBS_MARQUEE)
        DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0)
        GUICtrlSetColor(-1, 0x66cc00)
        GUICtrlSetBkColor(-1, 0x44aa00)
        Local $idStart = GUICtrlCreateButton("&Start", 10, 60, 70, 25)
        Local $idStop = GUICtrlCreateButton("S&top", 85, 60, 70, 25)
        Local $idExit = GUICtrlCreateButton("E&xit", 160, 60, 70, 25)
    
        GUISetState(@SW_SHOW)
    
        ; Loop until the user exits.
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE, $idExit
                    ExitLoop
    
                Case $idStart
                    ConsoleWrite('+ Start...' & @CRLF)
                    GUICtrlSendMsg($idProgress, $PBM_SETMARQUEE, 1, 50) ; Send the message $PBM_SETMARQUEE and wParam of 1 to start the scrolling marquee.
    
                Case $idStop
                    ConsoleWrite('- Stop...' & @CRLF)
                    GUICtrlSendMsg($idProgress, $PBM_SETMARQUEE, 0, 50) ; Send the message $PBM_SETMARQUEE and wParam of 0 to stop the scrolling marquee.
    
            EndSwitch
        WEnd
    EndFunc   ;==>Example
    Alles anzeigen
  • Zeit ändern per MouseWheel

    • Bitnugger
    • 30. Juni 2018 um 19:25
    Zitat von Oscar

    Du hast in Deiner ersten Version zweimal SetWindowLong auf $hGui:

    Oh man... ja, ich werde alt... daran lag es! :S

  • Fehlermeldung/Verzeichnis-Überwachung

    • Bitnugger
    • 30. Juni 2018 um 19:17
    Zitat von autoiter

    Denn du deregistrierst ja nur das letzte.

    So wie ich das verstehe, passiert in der While-Schleife in Zeile 26 im Prinzip gar nichts, außer das Zeit vergeudet wird... weil sich die Parameter nicht geändert haben...

    Im vorigen Post im Script..

    ;~ ********************************************************************************************************************************************************

    ;~ Das Beispiel in der AutoIt-Hilfe zu _WinAPI_ShellChangeNotifyRegister funktioniert nicht auf 64-Bit-Systemen, weil die erstellte Struktur für 32-Bit ausgelegt ist!!!

    ;

    ;~ FALSCH --> Local ... $sPath = _WinAPI_ShellGetPathFromIDList(DllStructGetData(DllStructCreate('dword Item1; dword Item2', $wParam), 'Item1'))

    ;

    ;~ So funktioniert es auf 32/64-Bit-Systemen!!!

    ;

    Local $sMsg, $sNewItems, $sEventNowCalc = _NowCalc(), $sEventNow = _Now(), _

    $sPath = _WinAPI_ShellGetPathFromIDList(DllStructGetData(DllStructCreate('INT_PTR Item1; INT_PTR Item2', $wParam), 'Item1'))

    ;~ ********************************************************************************************************************************************************


    Deshalb stürzte das Script nach kurzer Zeit ab...

  • Fehlermeldung/Verzeichnis-Überwachung

    • Bitnugger
    • 30. Juni 2018 um 19:01
    Zitat von bigeasy76

    $SHCNRF_NEWDELIVERY

    Diese Konstante ist in APIShellExConstants.au3 nicht deklariert, da hast du dich verschrieben... richtig wäre: $SHCNRF_NEWDELIVERY (Messages received use shared memory.)

    Es wird sogar von Microsoft empfohlen, dieses Flag zu benutzen... alle Clients sollten dies tun... im lokalen Netzwerk spielt es aber wohl kaum eine Rolle und mehr als $SHCNE_ALLEVENTS geht ja wohl nicht.

    Mit Opt('MustDeclareVars', 1) wäre dir das nicht passiert. 8o

    Diese kleine Demo hier sollte auch bei dir funktionieren...

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    ;-- TIME_STAMP   2018-06-30 18:56:22
    
    ;#RequireAdmin
    ;~ ConsoleWrite(20 + 100 + 186 + 6 & @CRLF)
    ;~ exit
    
    Opt('TrayAutoPause', 0)
    Opt('MustDeclareVars', 1)
    
    #Region ;************ Includes ************
    #include-once
    #include <Date.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <GuiListView.au3>
    #include <WinAPIShellEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <_Print.au3>
    #EndRegion ;************ Includes ************
    
    OnAutoItExitRegister('_OnAutoItExit')
    
    ; Die zu überwachenden Verzeichnisse
    Global $g_aPaths = ['M:\Test', @ScriptDir] ;, '\\Server\d\_Scripts\AutoIt\']
    ; Die zu überwachenden Dateien
    Global $g_aFiles = ['Test.txt', @ScriptName]
    ; Die zu überwachenden Dateierweiterungen (Bilder/Anim)
    Global $g_aExts = ['*.ani', '*.awd', '*.bmp', '*.dib', '*.cam', '*.cdr', '*.cur', '*.clp', '*.dcm', '*.acr', '*.dcx', '*.djvu', '*.iw44', '*.emf', '*.eps', '*.fpx', '*.g3', '*.gif', '*.icl', '*.ico', '*.iff', '*.lbm', '*.img', '*.jpg', '*.jpeg', '*.kdc', '*.ldf', '*.lwf', '*.pbm', '*.pcd', '*.pcx', '*.pgm', '*.png', '*.ppm', '*.psd', '*.psp', '*.ras', '*.sun', '*.rle', '*.sff', '*.sfw', '*.sgi', '*.rgb', '*.tga', '*.svg', '*.tbn', 'tif', '*.thm']
    
    Global $g_iID, $g_hGUI, $g_idLabelEventsMemo, $g_idEditEventsMemo, $g_hEditEventsMemo, $g_idLabelItemsMemo, $g_idEditItemsMemo, $g_hEditItemsMemo, $g_idButton_Start, $g_idButton_Exit
    
    Global Enum $eLVTextColor, $eLVTextBkColor, $eLVBkColor, $eLVOutlineColor
    Global $g_aLVColors = [_ColorConvert(0xCB4B16), _ColorConvert(0x073642), _ColorConvert(0x002B36), _ColorConvert(0xDC322F)] ; TextColor, TextBkColor, BkColor, OutlineColor
    
    _Main()
    
    Func _Main()
    
        DirCreate('M:\Test')
    
        #Region - GUI Create
        $g_hGUI = GUICreate('_ShellChangeNotify-Demo', 800, 690, @DesktopWidth - 850, 75, -1, $WS_EX_TOPMOST)
        GUISetBkColor(0x869657)
    
        Local $iStyle = BitOR($GUI_SS_DEFAULT_LISTVIEW, $LVS_SINGLESEL), $iExtStyle = BitOR($LVS_EX_CHECKBOXES, $LVS_SHOWSELALWAYS)
    
        Local $idDirListView = GUICtrlCreateListView('Überwachte Verzeichnisse', 0, 0, 396, 180, $iStyle, $iExtStyle)
        _GUICtrlListView_SetColumnWidth($idDirListView, 0, 380)
        For $i = 1 To UBound($g_aPaths) - 1
            GUICtrlCreateListViewItem($g_aPaths[$i], $idDirListView)
            _GUICtrlListView_SetItemChecked($idDirListView, $i - 1, 1)
        Next
        GUICtrlSetFont($idDirListView, 12, 800, 0, "Courier New")
        _ListView_SetColor($idDirListView, $g_aLVColors[$eLVTextColor], $g_aLVColors[$eLVTextBkColor], $g_aLVColors[$eLVBkColor], $g_aLVColors[$eLVOutlineColor])
    
        Local $idFileListView = GUICtrlCreateListView('Überwachte Dateien und Dateierweiterungen', 400, 0, 396, 180, $iStyle, $iExtStyle)
        _GUICtrlListView_SetColumnWidth($idFileListView, 0, 380)
        For $i = 1 To UBound($g_aFiles) - 1
            GUICtrlCreateListViewItem($g_aFiles[$i] & '.txt', $idFileListView)
            _GUICtrlListView_SetItemChecked($idFileListView, $i - 1, 1)
        Next
        For $i = 1 To UBound($g_aExts) - 1
            GUICtrlCreateListViewItem($g_aExts[$i], $idFileListView)
            _GUICtrlListView_SetItemChecked($idFileListView, $i - 1, 1)
        Next
        GUICtrlSetFont($idFileListView, 12, 800, 0, "Courier New")
        _ListView_SetColor($idFileListView, $g_aLVColors[$eLVTextColor], $g_aLVColors[$eLVTextBkColor], $g_aLVColors[$eLVBkColor], $g_aLVColors[$eLVOutlineColor])
    
        $g_idLabelEventsMemo = GUICtrlCreateLabel(' ShellChangeNotifyMessage ', 0, 190, 800, 20)
        GUICtrlSetFont(-1, 13, 800, 0, "Courier New")
        GUICtrlSetColor(-1, 0x8FBC8F)
        $g_idEditEventsMemo  = GUICtrlCreateEdit("", 0, 210, 796, 250, $ES_AUTOVSCROLL + $WS_VSCROLL)
        GUICtrlSetFont(-1, 9, 800, 0, "Courier New")
        $g_hEditEventsMemo   = GUICtrlGetHandle($g_idEditEventsMemo)
        GUICtrlSetColor(-1, 0x7FFFD4)
        GUICtrlSetBkColor(-1, 0x00008B)
    
        $g_idLabelItemsMemo  = GUICtrlCreateLabel(' Geänderte/gelöschte/neue Verzeichnisse und Dateien', 0, 470, 800, 20)
        GUICtrlSetFont(-1, 13, 800, 0, "Courier New")
        GUICtrlSetColor(-1, 0x8FBC8F)
        $g_idEditItemsMemo   = GUICtrlCreateEdit("", 0, 490, 796, 140, $ES_AUTOVSCROLL + $WS_VSCROLL)
        GUICtrlSetFont(-1, 9, 800, 0, "Courier New")
        $g_hEditItemsMemo    = GUICtrlGetHandle($g_idEditItemsMemo)
        GUICtrlSetColor(-1, 0xE9967A)
        GUICtrlSetBkColor(-1, 0x8B0000)
    
        $g_idButton_Start = GUICtrlCreateButton('Start Notify', 0, 640, 400, 50)
        GUICtrlSetFont(-1, 11, 900, 0, "Courier New")
        GUICtrlSetColor(-1, 0xE9967A)
        GUICtrlSetBkColor(-1, 0xDC143C)
        $g_idButton_Exit = GUICtrlCreateButton('Exit', 400, 640, 400, 50)
        GUICtrlSetFont(-1, 11, 900, 0, "Courier New")
        GUICtrlSetColor(-1, 0xE9967A)
        GUICtrlSetBkColor(-1, 0x483D8B)
    
        GUISetState()
        #EndRegion - GUI Create
    
        _MemoWriteEvents('PRESS Start Notify' & @CRLF)
        _MemoWriteItems('PRESS Start Notify' & @CRLF)
    
        Local $iMsg
        #Region - GUI SelectLoop
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE, $g_idButton_Exit
                    Exit
                Case $g_idButton_Start
                    GUICtrlSetState($g_idButton_Start, $GUI_DISABLE)
                GUICtrlSetColor($g_idButton_Start, 0x282828)
                GUICtrlSetBkColor($g_idButton_Start, 0x282828)
                    $iMsg = _WinAPI_RegisterWindowMessage('SHELLCHANGENOTIFY')
                    GUIRegisterMsg($iMsg, 'WM_SHELLCHANGENOTIFY')
                    ; Mit $SHCNRF_NEWDELIVERY stürzt das Script (bei mir) beim Aufruf von _WinAPI_ShellGetPathFromIDList auf Windows 10 X64 ab!!!
    ;~             Global $g_iID = _WinAPI_ShellChangeNotifyRegister($g_hGUI, $iMsg, $SHCNE_ALLEVENTS, BitOR($SHCNRF_NEWDELIVERY, $SHCNRF_INTERRUPTLEVEL, $SHCNRF_SHELLLEVEL, $SHCNRF_RECURSIVEINTERRUPT), $g_aPaths, 1)
                    $g_iID = _WinAPI_ShellChangeNotifyRegister($g_hGUI, $iMsg, $SHCNE_ALLEVENTS, BitOR($SHCNRF_INTERRUPTLEVEL, $SHCNRF_SHELLLEVEL, $SHCNRF_RECURSIVEINTERRUPT), $g_aPaths, 1)
                    If @error Or $iMsg = 0 Then
                        MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Error', 'Window does not registered.')
                        Exit 1
                    EndIf
    
                    ; Zur Demonstration mal kurz eine Datei erzeugen und direkt wieder löschen...
                    FileWrite($g_aPaths[0] & '\~ShellChangeNotify__--##--__$', @ScriptName)
                    Sleep(2000)
                    FileDelete($g_aPaths[0] & '\~ShellChangeNotify__--##--__$')
    ;~         Case $msg =
            EndSwitch
        WEnd
        #EndRegion - GUI SelectLoop
    EndFunc   ;==>_Main
    
    Func WM_SHELLCHANGENOTIFY($hWnd, $iMsg, $wParam, $lParam)
        #forceref $iMsg
    ;~     *********************************************************************************************************************************************************************
    ;~     Das Beispiel in der AutoIt-Hilfe zu _WinAPI_ShellChangeNotifyRegister funktioniert nicht auf 64-Bit-Systemen, weil die erstellte Struktur für 32-Bit ausgelegt ist!!!
    ;
    ;~     FALSCH -->  Local ... $sPath = _WinAPI_ShellGetPathFromIDList(DllStructGetData(DllStructCreate('dword Item1; dword Item2', $wParam), 'Item1'))
    ;
    ;~     So funktioniert es auf 32/64-Bit-Systemen!!!
    ;
        Local $sMsg, $sNewItems, $sEventNowCalc = _NowCalc(), $sEventNow = _Now(), _
            $sPath = _WinAPI_ShellGetPathFromIDList(DllStructGetData(DllStructCreate('INT_PTR Item1; INT_PTR Item2', $wParam), 'Item1'))
    ;~     *********************************************************************************************************************************************************************
    
        _MemoWriteEvents(StringFormat('$hWnd: %s $iMsg: %s $wParam: %s $lParam: %s\n', _Hex($hWnd), _Hex($iMsg), _Hex($wParam), _Hex($lParam)) & @CRLF)
    
        Local Static $iMsgCount = 0, $aSHCNE = _
            [[$SHCNE_ALLEVENTS    , '$SHCNE_ALLEVENTS'], _
            [$SHCNE_ASSOCCHANGED, '$SHCNE_ASSOCCHANGED'], [$SHCNE_ATTRIBUTES        , '$SHCNE_ATTRIBUTES']        , [$SHCNE_CREATE        , '$SHCNE_CREATE']        , [$SHCNE_DELETE        , '$SHCNE_DELETE'], _
            [$SHCNE_DRIVEADD    , '$SHCNE_DRIVEADD']    , [$SHCNE_DRIVEADDGUI        , '$SHCNE_DRIVEADDGUI']        , [$SHCNE_DRIVEREMOVED    , '$SHCNE_DRIVEREMOVED'], [$SHCNE_EXTENDED_EVENT, '$SHCNE_EXTENDED_EVENT'], _
            [$SHCNE_FREESPACE    , '$SHCNE_FREESPACE']    , [$SHCNE_MEDIAINSERTED        , '$SHCNE_MEDIAINSERTED']    , [$SHCNE_MEDIAREMOVED    , '$SHCNE_MEDIAREMOVED'], [$SHCNE_MKDIR            , '$SHCNE_MKDIR'], _
            [$SHCNE_NETSHARE    , '$SHCNE_NETSHARE']    , [$SHCNE_NETUNSHARE        , '$SHCNE_NETUNSHARE']        , [$SHCNE_RENAMEFOLDER    , '$SHCNE_RENAMEFOLDER'], [$SHCNE_RENAMEITEM    , '$SHCNE_RENAMEITEM'], _
            [$SHCNE_RMDIR        , '$SHCNE_RMDIR']        , [$SHCNE_SERVERDISCONNECT    , '$SHCNE_SERVERDISCONNECT'], [$SHCNE_UPDATEDIR        , '$SHCNE_UPDATEDIR']    , [$SHCNE_UPDATEIMAGE    , '$SHCNE_UPDATEIMAGE'], _
            [$SHCNE_UPDATEITEM    , '$SHCNE_UPDATEITEM']    , [$SHCNE_DISKEVENTS        , '$SHCNE_DISKEVENTS']        , [$SHCNE_GLOBALEVENTS    , '$SHCNE_GLOBALEVENTS'], [$SHCNE_INTERRUPT        , '$SHCNE_INTERRUPT']]
    
        $iMsgCount += 1
    
        For $i = 0 To UBound($aSHCNE) - 1 Step 1
            If $lParam = $aSHCNE[$i][0] Then
                $sMsg = StringFormat('%23s = 0x%8d', $aSHCNE[$i][1], Hex($aSHCNE[$i][0], 8))
            EndIf
        Next
    
        Switch $lParam
    
            Case $SHCNE_ALLEVENTS
                $sMsg = '0x7FFFFFFF     = $SHCNE_ASSOCCHANGED\' & _
                        'All events have occurred.\'
            Case $SHCNE_ASSOCCHANGED
                $sMsg = '0x8000000      = $SHCNE_ASSOCCHANGED\' & _
                        'A file type association has changed.\'
            Case $SHCNE_ATTRIBUTES
                $sMsg = '0x00000800     = $SHCNE_ATTRIBUTES\' & _
                        'The attributes of an item or folder have changed.\'
            Case $SHCNE_CREATE
                $sMsg = '0x00000002     = $SHCNE_CREATE\' & _
                        'A nonfolder item has been created.\'
                $sNewItems = _GetNewItems($sPath, $sEventNowCalc)
            Case $SHCNE_DELETE
                $sMsg = '0x00000004     = $SHCNE_DELETE\' & _
                        'A nonfolder item has been deleted.\'
            Case $SHCNE_DRIVEADD
                $sMsg = '0x00000100     = $SHCNE_DRIVEADD\' & _
                        'A drive has been added.\'
            Case $SHCNE_DRIVEADDGUI
                $sMsg = '0x00010000     = $SHCNE_DRIVEADDGUI\' & _
                        'Windows XP and later: Not used.\'
            Case $SHCNE_DRIVEREMOVED
                $sMsg = '0x00000080     = $SHCNE_DRIVEREMOVED\' & _
                        'A drive has been removed.\'
            Case $SHCNE_EXTENDED_EVENT
                $sMsg = '0x04000000     = $SHCNE_EXTENDED_EVENT\' & _
                        'Not currently used.\'
            Case $SHCNE_FREESPACE
    
                $sMsg = '0x00040000     = $SHCNE_FREESPACE\' & _
                        'The amount of free space on a drive has changed.\'
            Case $SHCNE_MEDIAINSERTED
                $sMsg = '0x00000020     = $SHCNE_MEDIAINSERTED\' & _
                        'Storage media has been inserted into a drive.\'
            Case $SHCNE_MEDIAREMOVED
                $sMsg = '0x00000040     = $SHCNE_MEDIAREMOVED\' & _
                        'Storage media has been removed from a drive.\'
            Case $SHCNE_MKDIR
                $sMsg = '0x00000008     = $SHCNE_MKDIR\' & _
                        'A folder has been created.\'
            Case $SHCNE_NETSHARE
                $sMsg = '0x00000200     = $SHCNE_NETSHARE\' & _
                        'A folder on the local computer is being shared via the network.\'
            Case $SHCNE_NETUNSHARE
                $sMsg = '0x00000400     = $SHCNE_NETUNSHARE\' & _
                        'A folder on the local computer is no longer being shared via the network.\'
            Case $SHCNE_RENAMEFOLDER
                $sMsg = '0x00020000     = $SHCNE_RENAMEFOLDER\' & _
                        'The name of a folder has changed.\'
            Case $SHCNE_RENAMEITEM
                $sMsg = '0x00000001     = $SHCNE_RENAMEITEM\' & _
                        'The name of a nonfolder item has changed.\'
            Case $SHCNE_RMDIR
                $sMsg = '0x00000010     = $SHCNE_RMDIR\' & _
                        'A folder has been removed.\'
            Case $SHCNE_SERVERDISCONNECT
                $sMsg = '0x00004000     = $SHCNE_SERVERDISCONNECT\' & _
                        'The computer has disconnected from a server.\'
            Case $SHCNE_UPDATEDIR
                $sMsg = '0x00001000     = $SHCNE_UPDATEDIR\' & _
                        'The contents of an existing folder have changed, but the folder still\' & _
                        ' exists and has not been renamed.\'
            Case $SHCNE_UPDATEIMAGE
                $sMsg = '0x00008000     = $SHCNE_UPDATEIMAGE\' & _
                'An image in the system image list has changed.\'
            Case $SHCNE_UPDATEITEM
                $sMsg = '0x00002000     = $SHCNE_UPDATEITEM\' & _
                        'An existing item (a folder or a nonfolder) has changed, but the item still exists and has not been renamed.\'
                $sNewItems = _GetUpdateItems($sPath, $sEventNowCalc)
            Case $SHCNE_DISKEVENTS
                $sMsg = '0x0002381F     = $SHCNE_DISKEVENTS\' & _
                        'Specifies a combination of all of the disk event identifiers.\'
            Case $SHCNE_GLOBALEVENTS
                $sMsg = '0x0C0581E0     = $SHCNE_GLOBALEVENTS\' & _
                        'Specifies a combination of all of the global event identifiers.\'
            Case $SHCNE_INTERRUPT
                $sMsg = '0x80000000     = $SHCNE_INTERRUPT\' & _
                        'The specified event occurred as a result of a system interrupt. As this value modifies other event values,\' & _
                        'it cannot be used alone.\'
        EndSwitch
    
        GUICtrlSetData($g_idLabelEventsMemo, ' Message Counter : ' & $iMsgCount)
        _MemoWriteEvents(@CRLF & $sEventNow & @CRLF & 'Event: ' & StringReplace($sMsg, '\', @CRLF))
    EndFunc   ;==>WM_SHELLCHANGENOTIFY
    
    Func _GetNewItems($sPath, $sEventNowCalc)
        ConsoleWrite('> _GetNewItems   : $sPath = "' & $sPath & '"' & @CRLF)
        If StringStripWS($sPath, $STR_STRIPALL) <> '' Then
            _MemoWriteItems($sEventNowCalc & '     NewItems: ' & $sPath & @CRLF)
    ;~         ...
            Return True
        EndIf
    EndFunc   ;==>_GetNewItems
    
    Func _GetUpdateItems($sPath, $sEventNowCalc)
        ConsoleWrite('- _GetUpdateItems: $sPath = "' & $sPath & '"' & @CRLF)
        If StringStripWS($sPath, $STR_STRIPALL) <> '' Then
            _MemoWriteItems($sEventNowCalc & '  UpdateItems: ' & $sPath & @CRLF)
    ;~         ...
            Return True
        EndIf
    EndFunc   ;==>_GetUpdateItems
    
    ; RGB to BGR or BGR to RGB
    Func _ColorConvert($iColor)
        Return BitOR(BitAND($iColor, 0x00FF00), BitShift(BitAND($iColor, 0x0000FF), -16), BitShift(BitAND($iColor, 0xFF0000), 16))
    EndFunc   ;==>_ColorConvert
    
    Func _Hex($vValue, $iLength = Default)
        Return '0x' & Hex($vValue, $iLength)
    EndFunc   ;==>_Hex
    
    ; Write a line to the memo control
    Func _MemoWriteEvents($sMessage = '')
        ConsoleWrite('-_MemoWriteEvents = ' & '  ' & $g_hEditEventsMemo & '  ' & $sMessage & @CRLF)
        _GUICtrlEdit_AppendText($g_hEditEventsMemo, $sMessage)
    EndFunc   ;==>_MemoWriteEvents
    
    ; Write a line to the memo control
    Func _MemoWriteItems($sMessage = '')
        ConsoleWrite('> _MemoWriteItems = ' & $g_hEditItemsMemo & '  ' & $sMessage & @CRLF)
        _GUICtrlEdit_AppendText($g_hEditItemsMemo, $sMessage)
    EndFunc   ;==>_MemoWriteItems
    
    Func _ListView_SetColor($idListView, $iTextColor = Default, $iTextBkColor = Default, $iBkColor = Default, $iOutlineColor = Default)
        _GUICtrlListView_SetTextColor($idListView, $iTextColor)
        _GUICtrlListView_SetTextBkColor($idListView, $iTextBkColor)
        _GUICtrlListView_SetBkColor($idListView, $iBkColor)
        _GUICtrlListView_SetOutlineColor($idListView, $iOutlineColor)
    EndFunc   ;==>_ListView_SetColor
    
    Func _OnAutoItExit()
        If $g_iID Then
            _WinAPI_ShellChangeNotifyDeregister($g_iID)
        EndIf
    EndFunc   ;==>_OnAutoItExit
    Alles anzeigen
  • Zeit ändern per MouseWheel

    • Bitnugger
    • 30. Juni 2018 um 10:14

    Ich habe eine Logitech Wireless Mouse M560 mit freilaufendem Rad... da reicht ein Schubser und das Teil dreht sich wie ein einarmiger Bandit... ^^

    Die Variante mit WinProc hat übrigens einen kleinen (unbeabsichtigten?) Nebeneffekt... denn die Uhr lässt sich auch stellen, wenn das Fenster disabled ist.

    Gestern kam mir der Gedanke, mal kurz zu Testen, wie gut es mit der WinProc-Variante funktioniert, wenn ich mehrere Uhren/Fenster auf eine Funktion registriere. Dann habe ich für beide Fenster einen Button hinzugefügt, mit dem ich das jeweils andere aktiveren und das eigene disablen kann. Nach mehrmaligen Switchen habe ich bemerkt, dass es immer 1-3 Sekunden dauert, bis sich die Fenster nach einem Klick auf den Close-Button schließen. Dann habe ich eine zweite Version geschrieben, die für jedes Fenster eine WinProc-Funktion hat und war erstaunt, dass die Fenster bei dieser viel zügiger reagieren.

    Dateien

    MouseWheel_SetDualTime_WinProc.rar 2,84 kB – 288 Downloads
  • Fehlermeldung/Verzeichnis-Überwachung

    • Bitnugger
    • 30. Juni 2018 um 04:52
    Zitat von autoiter

    Allerdings würde ich dir den Vorschlag machen, einfach die FileSystemMonitor UDF aus dem englischen Forum zu verwenden.

    Das Teil hatte ich auch mal getestet... es ist aber gar nicht nötig, denn die WinAPI hat dafür doch alles, was man braucht...

    _WinAPI_RegisterWindowMessage, _WinAPI_ShellChangeNotifyRegister, _WinAPI_ShellGetPathFromIDList, _WinAPI_ShellChangeNotifyDeregister

    Der oder die zu überwachenden Pfade können entweder als String, oder als Array übergeben werden. In der AutoIt-Hilfe gibt es auch ein Beispiel dafür.

  • Pixelsearch / alternative für Bilder

    • Bitnugger
    • 30. Juni 2018 um 00:57
    Zitat von vcopsmtl

    so hab ichs getestet und bei $j hat er den $step erst geändert als $j einmal durchlief und eine neue $i gestartet wurde.

    Das kannst du aber alles indirekt steuern...

    AutoIt
    Local $iStepi, $iStepj
    For $i = 0 To 10 Step $iStepi
        If Mod($i, $iStepi) Then ContinueLoop
        For $j = 0 To 10 Step $iStepj
    ;~         MsgBox(0,"","stepi " & $iStepi &  @CRLF & "stepj " & $iStepj & @CRLF & "i " & $i & " j " & $j)
    ;~         If $i = 5 Then $iStepi = 2 ; so
    ;~         If $j = 4 Then $iStepj = 3 ; ...
            $iStepi = $i = 5 ? 2 : $i  ; oder
            $iStepj = $j = 4 ? 3 : $j  ; so
            If Mod($j, $iStepj) Then ExitLoop
        Next
    Next
    MsgBox(0,"",$i & " " & $j)
    Alles anzeigen
  • Pixelsearch / alternative für Bilder

    • Bitnugger
    • 29. Juni 2018 um 03:11
    Zitat von vcopsmtl

    Skippen : - Bisher nicht da bei for .. next keine anderer Step während des aufrufens verwendet werden kann und ich dadurch relevante Koordinaten verlieren kann.

    Für Step kannst du natürlich nur einen konstanten Wert angeben... aber was hindert dich daran, den Wert innerhalb des Loops indirekt zu ändern?

    AutoIt
    ;~ #include <Array.au3>
    
    Local $iStep = 1, $iCount = 10000, $iLoop, $aSearch[$iCount]
    For $i = 0 To $iCount -1 Step 1
        $aSearch[$i] = Random(0, 0xFFFFFF, 1)
    Next
    ;~ _ArrayDisplay($aSearch, '$aSearch')
    ConsoleWrite(@CRLF & '+ $iStep = ' & $iStep & @CRLF & @CRLF)
    For $i = 0 To $iCount -1 Step $iStep
        $iLoop += 1
        Switch True
            Case StringLeft(Hex($aSearch[$i], 6), 2) = "FF"   ; Red
                $iStep = 2
                ConsoleWrite('- $iStep = ' & $iStep & @CRLF)
            Case StringMid(Hex($aSearch[$i], 6), 3, 2) = "A0" ; Green
                $iStep = 3
                ConsoleWrite('! $iStep = ' & $iStep & @CRLF)
            Case StringRight(Hex($aSearch[$i], 7), 2) = "B2"  ; Blue
                $iStep = 4
                ConsoleWrite('> $iStep = ' & $iStep & @CRLF)
            Case Else
                $iStep = 1
    ;~             ConsoleWrite('+ $iStep = ' & $iStep & @CRLF)
        EndSwitch
        $i += $iStep -1
        If $i > UBound($aSearch) -1 Then ExitLoop
    Next
    ConsoleWrite(@CRLF & '+ $iLoop = ' & $iLoop & @CRLF & @CRLF)
    
    Sleep(2000)
    Alles anzeigen
  • Anfängerfragen

    • Bitnugger
    • 26. Juni 2018 um 23:15

    Ich war mal so frei... im Archiv im Anhang ist nochmals das Script und drei Testdateien... XMLFILE_1.xml wird nach X, XMLFILE_2.xml nach Y verschoben, XMLFILE_3.xml wird gelöscht.

    AutoIt: XML_MOVE.au3
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #Region ;************ Includes ************
    #include <File.au3>
    ;~ #include <WinAPIConv.au3>
    #include <WinAPI.au3>
    #EndRegion ;************ Includes ************
    
    ;-- TIME_STAMP   2018-06-26 23:04:05   v 0.1
    
    _CheckFiles()
    
    ; - Business Partner Nummer = 19001 .............. --> Datei in Verzeichniss X verschieben
    ; - Checkfield Number = 9 oder 10 und Value = True --> Datei in Verzeichniss Y verschieben
    ; - Kein Kriterium erfüllt ....................... --> Datei löschen
    Func _CheckFiles()
        Local $aXML, $sXML_PATH = @ScriptDir & '\XMLFILES\', $sXML_XDIR = @ScriptDir & '\X\', $sXML_YDIR = @ScriptDir & '\Y\', _
        $aXML_FILES = _FileListToArray($sXML_PATH, '*.xml', $FLTA_FILES, True), _
        $sSpacer = '-----------------------------------------------------------------------------------------------------------------' & @CRLF
    ;~ _ArrayDisplay($aXMLFILES, '$aXMLFILES')
    
        ConsoleWrite($sSpacer)
        For $i = 1 To $aXML_FILES[0] Step 1
            $aXML = FileReadToArray($aXML_FILES[$i])
            ConsoleWrite("> $aXML_FILES[" & StringFormat('%03i', $i) & "])      --> " & $aXML_FILES[$i] & @CRLF)
            If StringRegExp(_ArrayToString($aXML, ''), 'BusinessPartnerNumber\>19001\<') Then
                ConsoleWrite('+ Move to X              --> BusinessPartnerNumber = 19001' & @CRLF)
                FileMove($aXML_FILES[$i], $sXML_XDIR, BitOR($FC_OVERWRITE, $FC_CREATEPATH)) ; overwrite existing files
            ElseIf _CheckField($aXML, 'True', 9) Or _CheckField($aXML, 'True', 10) Then
                ConsoleWrite('- Move to Y              --> CheckField 9/10 = True' & @CRLF)
                FileMove($aXML_FILES[$i], $sXML_YDIR, BitOR($FC_OVERWRITE, $FC_CREATEPATH)) ; overwrite existing files
            Else
    
                ConsoleWrite(_WinAPI_WideCharToMultiByte('! Delete File            --> Kein Kriterium erfüllt', @Compiled ? 1 : 65001) & @CRLF) ; UTF-8
                FileDelete($aXML_FILES[$i])
            EndIf
            ConsoleWrite($sSpacer)
        Next
    EndFunc   ;==>_CheckFiles
    
    Func _CheckField(ByRef $aXML, $bValue, $iNumber)
        Local $_iIndex = 0, $_bValue, $_iNumber
        While 1
            $_iIndex = _ArraySearch($aXML, '<CheckField>', $_iIndex, 0, 0, 1)
            If $_iIndex = -1 Then Return False
    
            $_bValue = StringRegExpReplace($aXML[$_iIndex + 1], '.+>(.+)<.+', '\1')
            $_iNumber = StringRegExpReplace($aXML[$_iIndex + 2], '.+>(.+)<.+', '\1')
            If (($_iNumber = $iNumber) And ($_bValue = $bValue)) Then Return True
            $_iIndex += 1
        WEnd
    EndFunc   ;==>_CheckField
    Alles anzeigen

    pasted-from-clipboard.png

    Dateien

    XML_MOVE.ZIP 2,32 kB – 410 Downloads
  • Pixelsearch / alternative für Bilder

    • Bitnugger
    • 25. Juni 2018 um 09:20

    Läuft bei mir auch einwandfrei... mit Win 10 und Win 7 (x64) und auch mit *.tif!

  • Firefox url auslesen funktioniert nicht mehr

    • Bitnugger
    • 24. Juni 2018 um 02:15
    Zitat von water

    Andere Möglichkeit wäre die WebDriver UDF von Danp2

    WebDriver funktioniert nicht mal mit meiner ESR-Version... wie es scheint, kann geckodriver.exe keine Verbindung herstellen.

    Zitat von autoBert

    Ich bin auch auf der ESR-Schiene 52.8.1

    Hast du (wie ich) die 32-Bit-Version installiert?

    Zitat von Tweaky

    Wobei dein Skript nichts anderes ist als das was ich oben gepostet habe nur alles in einer Datei

    Grins... klar... nicht wirklich, aber ich lasse das einfach mal so stehen. 8o

    Mit diesem Script geht es jedenfalls mit meiner ESR-Version...

    ESR.png

  • Pixelsearch / alternative für Bilder

    • Bitnugger
    • 23. Juni 2018 um 19:13
    AutoIt
    ;~ Oder so...
    MsgBox( _
        64, _ ; $MB_ICONINFORMATION
        "Info", _ ; Title
        "Dies ist ein sehr langer Text mit ganz vielen Worten, " & _ ; Text... man achte auf das "&"
        "wovon die meisten aber nur heiße Luft sind, " & _
        "doch einige machen tatsächlich Sinn!" _
    )
    
    ;~ Alternativ geht das auch so...
    Local $sText = "Dies ist ein sehr langer Text mit ganz vielen Worten, "
        $sText &= "wovon die meisten aber nur heiße Luft sind, "
        $sText &= "doch einige machen tatsächlich Sinn!"
    MsgBox(64, "Info", $sText)
    Alles anzeigen
  • Fenster aktivieren - Schreibweise

    • Bitnugger
    • 23. Juni 2018 um 13:50
    Zitat von alpines

    auch wenn dann für alle

    Eben... genau deshalb habe ich den Vorschlag gemacht. ;)

  • Firefox url auslesen funktioniert nicht mehr

    • Bitnugger
    • 23. Juni 2018 um 13:39

    Es liegt an Firefox... mit Firefox Quantum hat sich sehr viel geändert und viele Sachen funktionieren damit leider nicht mehr.

    Deshalb benutze ich das Firefox Extended Support Release (ESR 52), denn damit funktionieren die für mich wichtigen Dinge noch.

    Wenn du lediglich die URL aus dem Browser haben willst, dann reicht auch dieses kleine Script:

    AutoIt
    ;-- TIME_STAMP   2018-06-23 13:33:36   v 0.1
    
    Global $sURL = OpenGetURL("", -1, 0, "Firefox")
    ConsoleWrite((@error ? "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: 0x" & Hex(@extended) : _
        "> $sURL --> " & StringReplace($sURL, '"', ''))  & @CRLF) ; Firefox Quantum --> DMLERR_NOTPROCESSED 0x4009 A transaction has failed.
    
    ;===============================================================================
    ;
    ; Function Name:  OpenGetURL()
    ;
    ; Parameter(s):     $sURL           [optional] Address of page to open,
    ;                                   if this is empty string (default), then returned Url from address field of particular tab.
    ;                   $hWin           [optional] Number of tab:
    ;                                       -1 = Current tab.
    ;                                       0 = New tab (when opening).
    ;                   $RetType        [optional] Definds returned value:
    ;                                       0 = String with Title and URL address.
    ;                                       1 = Array with 3 elements...
    ;                                           [0] = Title
    ;                                           [1] = URL address
    ;                                           [2] = String with Title And URL address.
    ;                   $Server         [optional] Server to open/get Url in/from.
    ;                   $iWait          [optional] Waiting Timeout in milliseconds, on overload will return an error.
    ;
    ; Requirement(s):   None
    ; Return Value(s):  On Success -  See 'Parameter(s)'.
    ;                   On Failure -  Empty string and set @error as following:
    ;                       1 = Error to open Dll (user32.dll)
    ;                       2 = Error Initializing DDE (@extended include more details about the returned value from DllCall).
    ;                       3 = Othe DDE Errors (@extended include more details about the returned value from DllCall).
    ; Author(s):        amel27
    ; Modified:         Bitnugger
    ;
    ;=====================================================================
    Func OpenGetURL($sURL = "", $hWin = -1, $RetType = 0, $Server="IExplore", $iWait = 10000)
        Local Const $CP_WINUNICODE = 1200, $CP_WINANSI = 1004
        Local $ret, $err, $uIdInst = DllStructCreate("dword")
        Local $hServer[1], $hTopic[1], $hItem[1], $hConv[1], $hData[1], $sData[1]
        Local $sTopic = "WWW_OpenURL", $sItem = $sURL & ',,0x' & Hex($hWin)
        If $sURL = '' Then
            $sTopic = "WWW_GetWindowInfo"
            $sItem = "0x" & Hex($hWin)
        EndIf
        Local $hDll = DllOpen("user32.dll")
        If $hDll=-1 Then Return SetError(1, 0, "") ; Error to open Dll
        $ret = DllCall("user32.dll", "int", "DdeInitialize", "ptr", DllStructGetPtr($uIdInst), "ptr", 0, "int", 0, "int", 0)
        If $ret[0] Then Return SetError(2, $ret[0], "") ; Error Initializing DDE
        $hServer = DllCall($hDll, "int", "DdeCreateStringHandle", "dword", DllStructGetData($uIdInst,1), "str", $Server, "int", $CP_WINANSI)
        If $hServer[0] Then
            $hTopic = DllCall($hDll, "int", "DdeCreateStringHandle", "dword", DllStructGetData($uIdInst,1), "str", $sTopic, "int", $CP_WINANSI)
            If $hTopic[0] Then
                $hItem = DllCall($hDll, "int", "DdeCreateStringHandle", "dword", DllStructGetData($uIdInst,1), "str", $sItem, "int", $CP_WINANSI) ; <--
                If $hItem[0] Then
                    $hConv = DllCall($hDll, "int", "DdeConnect", "dword", DllStructGetData($uIdInst,1), "int", $hServer[0], "int", $hTopic[0], "int", 0)
                    If $hConv[0] Then
                        $hData = DllCall($hDll, "int", "DdeClientTransaction", "ptr", 0, "dword", 0, "int", $hConv[0], "uint", $hItem[0], "uint", 1, "dword", 0x20B0, "int", $iWait, "ptr", 0)
                        If $hData[0] Then $sData = DllCall($hDll, "str", "DdeAccessData", "int", $hData[0], "ptr", 0)
                    EndIf
                EndIf
            EndIf
        EndIf
        $iErr = DllCall($hDll, "int", "DdeGetLastError", "int", DllStructGetData($uIdInst, 1))
        Local $aFree = [$hData[0], $hConv[0], $hItem[0], $hTopic[0], $hServer[0]]
        For $i = 0 To UBound($aFree) -1 Step 1
            If $aFree[$i] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $aFree[$i])
        Next
        DllCall($hDll, "int", "DdeUninitialize", "dword", DllStructGetData($uIdInst, 1))
        DllClose($hDll)
        If $iErr[0] Then Return SetError(3, $iErr[0], "") ; Other DDE Errors
    
        If StringRight($sData[0], 3) = ',""' Then $sData[0] = StringTrimRight($sData[0], 3)
        If $sURL = '' Then $sURL = StringRegExpReplace($sData[0], '^"([^"]*?)".*','"\1"')
    
        If $RetType = 1 Then
            Local $iRetTitle = StringReplace(StringTrimLeft($sData[0], StringLen($sURL)+1), '\"', '"')
            Local $RetURL[3] = [StringReplace($sData[0], '\"', '"'), $sURL, $iRetTitle]
            Return $RetURL
        EndIf
    
        Return $sURL
    EndFunc
    Alles anzeigen
  • Fenster aktivieren - Schreibweise

    • Bitnugger
    • 23. Juni 2018 um 01:45

    Du kannst es auch so machen...

    AutoIt
    ; Am Ende des Titels muss "Mozilla Firefox" stehen, egal ob groß oder klein geschrieben!
    Global $hWnd = WinGetHandle('[CLASS:MozillaWindowClass; REGEXPTITLE:(?i)Mozilla fIREfOX$]'), $sTitle = WinGetTitle($hWnd)
    ConsoleWrite('$hWnd = ' & $hWnd & ' $sTitle = ' & $sTitle & @CRLF)
  • schneller Wechsel zwischen 2 definierten - öfter wechselnden - Fenstern

    • Bitnugger
    • 23. Juni 2018 um 01:22

    Dafür benutze ich dieses Tool hier: https://www.stardock.com/products/groupy/

    Damit kann man beliebig viele Fenster einer Gruppe zuordnen und diese bei Bedarf auch speichern.

    Das sieht dann etwa so aus...

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

  • Warum wird das Script nicht pausiert

    • Bitnugger
    • 22. Juni 2018 um 06:40

    Mit Windows 10 geht es so:

    AutoIt
    Run(StringFormat('"%s\control.exe" desk.cpl', @SystemDir))
    Global $hWnd = WinWait('[CLASS:ApplicationFrameWindow; REGEXPTITLE:Einstellungen|Settings]', '', 3)
    If IsHWnd($hWnd) Then
        WinWaitClose($hWnd)
        ConsoleWrite('> Close!' & @CRLF)
    Else
        ConsoleWrite('! Error!' & @CRLF)
    EndIf
  • Digitaluhr v4

    • Bitnugger
    • 20. Juni 2018 um 19:14

    Ja ok, verstehe... aber zumindest beim Systemstart sollte sie sich dann nicht über andere Fenster legen und nur angezeigt werden, wenn der Desktop vorne ist. ;)

    Stichwort: _WinAPI_RegisterShellHookWindow

    Evtl. hast du ja auch Lust, es einstellbar zu machen... 8o

  • Digitaluhr v4

    • Bitnugger
    • 20. Juni 2018 um 18:43
    Zitat von Oscar

    Ist das beim starten aus dem @StartupDir nicht automatisch so?

    Nein. In welcher Reihenfolge die Programme aus @StartupDir gestartet werden, wird durch die Reihenfolge bestimmt, in der diese hinzugefügt wurden. Bei mir wird erst Total Commander (maximiert) gestartet und dann die DigitalUhr... die dann aber nicht auf dem Desktop ist.

  • Der nächste Fehler

    • Bitnugger
    • 20. Juni 2018 um 18:31

    Das ist ein Übersetzungsfehler... richtig übersetzt wäre es etwa so...

    Setzt @error auf 3, @extended auf 10 und gibt die Zeichenfolge "Irgendein Rückgabewert" zurück.

    Solche Fehler solltest du aber besser hier melden: Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2018.01.20)

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™