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

Beiträge von autoBert

  • Problem mit _GUICtrlTreeView_FindItem _GUICtrlTreeView_SelectItem

    • autoBert
    • 6. April 2013 um 01:22
    Zitat von BugFix

    - Du nutzt die Funktion _GUICtrlTreeView_SelectItem mit einem String? ($sTVItem), es wird aber das Handle des zu selektierenden Item erwartet.


    War ein Handle (Rückgabe von _GUICtrlTreeView_FindItem) nur unkorrekt benannt.

    Zitat von BugFix

    - Du verwendest die Ctrl-ID, nach meiner Erfahrung ist auch beim Treeview das Handle angebrachter.


    Bingo das wars, seltsamerweise läuft aber das Beispiel zu _GUICtrlTreeView_SelectItem mit einer ControlID.

    Derzeit ist noch ein anderer Bug bei der Darstellung der Systemicons (bereits in obigem Skript)enthalten. Ich nutze dazu Routinen von Progandy, welche auch Oscar in seinem Filecommander erfolgreich benutzt. Setze trotzdem auf gelöst und mache notfalls zu einem späteren Zeitpunkt ein Thema dazu auf.

    mfg autoBert

  • Problem mit _GUICtrlTreeView_FindItem _GUICtrlTreeView_SelectItem

    • autoBert
    • 5. April 2013 um 23:11

    Hallo com,

    ich versuche gerade einen FTP-Client zu schreiben. Dazu habe ich ein Treeview und ein Listviewcontrol. Das befüllen der Listview wenn ein neuer TV-Knoten ausgewählt ist klappt. Umgedreht soll aber auch wenn im LV ein Ordnereintrag doppelgeklickt wird der entsprechende TV-Knoten ausgewählt werden. Die Routine die ich dafür geschrieben habe gibt mit auch das Handle des (richtigen ?)TV-Knotens aus wählt in aber nicht aus:

    Spoiler anzeigen
    [autoit]

    Func _DblClick($idLV)
    Local $sCC=ControlGetFocus($hGUI)
    if Not StringInStr($sCC,'SysListView32') Then Return
    Local $aLVItem = _GUICtrlListView_GetItemTextArray($idLV)
    Local $sActItem=StringReplace(StringReplace(_GUICtrlTreeView_GetTree($idTVLocal),$Delim1,$Delim),'\\','\')
    Local $hTVItem=_GUICtrlTreeView_FindItem ($idTVLocal,$aLVItem[1])
    ;ControlTreeView($hGUI,'',$idTVLocal,'select',$sTVItem)
    ConsoleWrite($sActItem&' TVItem: '&$hTVItem&' ['&$aLVItem[1]&']'& @CRLF)
    _GUICtrlTreeView_SelectItem ($idLVLocal,$hTVItem)
    ;_GUICtrlTreeView_ClickItem($idLVLocal, $sTVItem, "left", False, 1)
    ;_GUICtrlTreeView_SetFocused ($idLVLocal,$sTVItem)
    ;_GUICtrlTreeView_SetSelected ($idLVLocal,$sTVItem)
    EndFunc ;==>_DblClick

    [/autoit]

    Edit: Da das Beispielskript zu _GUICtrlTreeView_SelectItem das von mit erwartete Ergebnis bewirkt liegt der Fehler wohl bei _GUICtrlTreeView_FindItem.
    Edit2: auch ein Testskript mit beiden funktioniert einwandfrei. Daraufhin habe ich mir (in meinem eigentlichen Skript)bei der Erstellung der TV-Knoten das Handle für einen bestimmten Knoten in die Konsole ausgeben lassen. Er stimmt bei Doppelklick auf den entsprechenden LV-Eintrag überein also doch der Fehler bei _GUICtrlTreeView_SelectItem ?(
    _GUICtrlTreeView_ClickItem funktioniert aber auch nicht mit dem gefundenen Handle.

    und hier das mittlerweile lauffähige noch unvollendete Skript:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Array.au3>
    #include <Crypt.au3>
    #include <GuiButton.au3>
    #include <GuiImageList.au3>
    #include <GuiComboBoxEx.au3>
    #include <GuiTreeView.au3>
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include "FTP_FileList_Recursiv3.au3"
    #include "GUICtrlPic.au3"
    #include <Misc.au3>
    #include <File.au3>
    #include <ProgressConstants.au3>
    #include <SendMessage.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $sIni = @AppDataDir & '\AutoZilla\aZ.ini'
    If Not FileExists(@AppDataDir & '\AutoZilla') Then
    DirCreate(@AppDataDir & '\AutoZilla')
    IniWrite($sIni, 'MainForm', 'width', 640)
    IniWrite($sIni, 'MainForm', 'Heigth', 480)
    EndIf

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

    Global $hImgDrives = _GUIImageList_Create(16, 16, 5, 1)
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 3) ; Verzeichnis-Icon
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 110) ; Verzeichnis-Icon mit Haken
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 1) ; Datei-Icon
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 5) ; Diskette
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 7) ; Wechseldatenträger
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 8) ; Festplatte
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 11) ; CDROM
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 12) ; Netzwerklaufwerk
    _GUIImageList_AddIcon($hImgDrives, 'shell32.dll', 53) ; Unbekannt

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

    Global Const $Delim = '\', $Delim1 = '|'
    Global $hGUI
    Global $hWndTVLocal, $idTVLocal
    Global $sPathLocalTV, $sOldPathLocalTV
    Global $hWndLVLocal, $idLVLocal
    Global $hWndTVFTP, $idTVFTP
    Global $sPathFTPTV, $sOldPathFTPTV
    Global $hWndLVFTP, $idLVFTP
    Global $sSelect = 'Anmeldeprofil auswählen'
    Global $dll = DllOpen("user32.dll")
    Global Const $tagSHFILEINFO = 'ptr hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];'
    Global Const $SHGFI_USEFILEATTRIBUTES = 0x10
    Global Const $SHGFI_SYSICONINDEX = 0x4000
    Global Const $SHGFI_SMALLICON = 0x1
    Global Const $SHGFI_LARGEICON = 0x0
    Global $FOLDER_ICON_INDEX = _GUIImageList_GetFileIconIndex(@SystemDir, False, 1)
    Global $iActiveLV = -99
    Global $iActiveTV = -99

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

    Global $iHidden = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden') - 1
    Global $iSuperHidden = Not RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden')
    _CreateGui()

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

    Func _CreateGui()
    Local $iLW
    Local $iWidth = IniRead($sIni, 'MainForm', 'width', 640)
    Local $iHeight = IniRead($sIni, 'MainForm', 'Heigth', 480)
    Local $iSH_Top = IniRead($sIni, 'MainForm', 'SH_Top', Int($iHeight / 2))
    Local $iSV_Left = IniRead($sIni, 'MainForm', 'SV_Left', Int($iWidth / 3))
    Local $l_InternetSession = -99, $l_FTPSession
    Local $errOpen, $errFTP, $iState
    Local $nMsg, $aPos
    Local $iMaxDepth = 1;max 1 Untervereichnisebene <1=unendliche Rekrusionstiefe
    $hGUI = GUICreate("AutoItZilla v. 0.2.0.8", $iWidth, $iHeight);,Default,Default,$WS_POPUP)
    GUISetBkColor(0xAAAA44)
    Local $idCboSrv = GUICtrlCreateCombo('', 5, 2, 145, 22)
    Local $sKey, $sSelSrv, $aLoginData[6][2]
    GUICtrlCreateLabel('Ben&utzer:', 155, 5, 60, 20)
    GUICtrlCreateLabel('&Passwort:', 220, 5, 90, 20)
    GUICtrlCreateLabel('&Server:', 320, 5, 120, 20)
    GUICtrlCreateLabel('Port:', 450, 5, 30, 20)
    GUICtrlCreateLabel('&Art:', 490, 5, 65, 20)
    Local $idInpUser = GUICtrlCreateInput('', 155, 25, 60, 20)
    Local $idInpPass = GUICtrlCreateInput('', 220, 25, 90, 20, $ES_PASSWORD)
    Local $idInpServer = GUICtrlCreateInput('', 320, 25, 120, 20)
    Local $idInpPort = GUICtrlCreateInput('', 450, 25, 30, 20, $ES_NUMBER)
    Local $idCboState = GUICtrlCreateCombo('', 490, 25, 65, 20)
    GUICtrlSetData(-1, 'Aktiv|Passiv')
    GUICtrlSetData(-1, 'Aktiv')
    Local $idBtnCon = GUICtrlCreateButton('&verbinden', 560, 5, 75, 20)
    Local $hImgCon = _GUIImageList_Create(16, 16, 5, 3, 6)
    _GUIImageList_AddIcon($hImgCon, @SystemDir & "\docprop.dll", 0, True)
    _GUICtrlButton_SetImageList($idBtnCon, $hImgCon)
    Local $idBtnDiscon = GUICtrlCreateButton('&trennen', 560, 25, 75, 20)
    Local $hImgDiscon = _GUIImageList_Create(16, 16, 5, 3, 6)
    _GUIImageList_AddIcon($hImgDiscon, @SystemDir & "\docprop.dll", 2, True)
    _GUICtrlButton_SetImageList($idBtnDiscon, $hImgDiscon)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Local $idBtnIns = GUICtrlCreateButton('e&intragen', 5, 25, 75, 20)
    Local $hImgIns = _GUIImageList_Create(16, 16, 5, 3, 6)
    _GUIImageList_AddIcon($hImgIns, @SystemDir & "\wmploc.dll", 15, True)
    _GUICtrlButton_SetImageList($idBtnIns, $hImgIns)
    Local $idBtnDel = GUICtrlCreateButton('&löschen', 82, 25, 68, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Local $hImgDel = _GUIImageList_Create(16, 16, 5, 3, 6)
    _GUIImageList_AddIcon($hImgDel, @SystemDir & "\compstui.dll", 5, True)
    _GUICtrlButton_SetImageList($idBtnDel, $hImgDel)
    $idTVFTP = GUICtrlCreateTreeView(5, 50, $iSV_Left - 7, $iSH_Top - 53)
    $hWndTVFTP = GUICtrlGetHandle($idTVFTP)
    _GUICtrlTreeView_SetNormalImageList($idTVFTP, $hImgDrives)
    $idLVFTP = GUICtrlCreateListView('Name|Grösse|Datum|Attribute', $iSV_Left + 9, 50, $iWidth - $iSV_Left - 13, $iSH_Top - 52)
    $hWndTVFTP = GUICtrlGetHandle($idTVFTP)
    _GUICtrlTreeView_SetNormalImageList($idTVFTP, $hImgDrives)
    $idTVLocal = GUICtrlCreateTreeView(5, $iSH_Top + 25, $iSV_Left - 7, $iHeight - $iSH_Top - 30)
    $hWndTVLocal = GUICtrlGetHandle($idTVLocal)
    _GUICtrlTreeView_SetNormalImageList($idTVLocal, $hImgDrives)
    $idLVLocal = GUICtrlCreateListView('Name|Grösse|Datum|Attribute', $iSV_Left + 9, $iSH_Top + 27, $iWidth - $iSV_Left - 13, $iHeight - $iSH_Top - 31)
    $hWndLVLocal = GUICtrlGetHandle($idLVLocal)
    _GUICtrlListView_SetImageList($idLVLocal, _GUIImageList_GetSystemImageList(False), 1)
    _GUICtrlListView_SetColumnWidth($idLVLocal, 0, 150)
    _GUICtrlListView_SetColumnWidth($idLVLocal, 1, 100)
    _GUICtrlListView_SetColumnWidth($idLVLocal, 2, 70)
    _GUICtrlListView_SetColumnWidth($idLVLocal, 3, $LVSCW_AUTOSIZE_USEHEADER)
    _GUICtrlListView_JustifyColumn($idLVLocal, 1, 1)
    Local $idSplitterV = GUICtrlCreateLabel('', $iSV_Left, 48, 8, $iHeight - 50, Default, $SS_BLACKFRAME)
    GUICtrlSetBkColor(-1, 0x444444)
    Local $idSplitterH = GUICtrlCreateLabel('', 0, $iSH_Top, $iWidth, 26, Default, $SS_BLACKFRAME)
    GUICtrlSetBkColor(-1, 0xAAAA44)
    GUICtrlSetColor(-1, 0x444444)
    Local $idBtnUp = GUICtrlCreateButton('&Upload', 15, $iSH_Top + 3, 75, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Local $hImgUp = _GUIImageList_Create(16, 16, 5, 3, 6)
    _GUIImageList_AddIcon($hImgUp, @SystemDir & "\netshell.dll", 149, True)
    _GUICtrlButton_SetImageList($idBtnUp, $hImgUp)
    Local $idBtnDown = GUICtrlCreateButton('&Download', $iWidth - 95, $iSH_Top + 3, 75, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Local $hImgDown = _GUIImageList_Create(16, 16, 5, 3, 6)
    _GUIImageList_AddIcon($hImgDown, @SystemDir & "\netshell.dll", 150, True)
    _GUICtrlButton_SetImageList($idBtnDown, $hImgDown)
    Local $idStatus = GUICtrlCreateLabel('nicht verbunden', 195, $iSH_Top + 6, $iWidth - 375, 16, $SS_CENTER)
    GUICtrlSetBkColor($idStatus, 0xFF0000)
    Local $idDmyLVLocal = GUICtrlCreateDummy()
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW, $hGUI)
    GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
    AdlibRegister('_GetLocalTVPath')
    Local $aDrives = DriveGetDrive('ALL')
    For $i = 1 To $aDrives[0]
    _PopulateTV_Local($idTVLocal, StringUpper($aDrives[$i]) & '\', $iLW)
    $iLW += 1
    Next
    Global $aAccelKeys[1][2] = [['{Enter}', $idDmyLVLocal]]
    GUISetAccelerators($aAccelKeys, $hGUI)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE ;, $idBtnExit
    If $l_InternetSession <> -99 Then _FTP_Close($l_InternetSession)
    DllClose($dll)
    Exit
    Case $idDmyLVLocal
    _DblClick($idLVLocal)
    EndSwitch
    WEnd
    EndFunc ;==>_CreateGui

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

    Func _PopulateTV_Local($idTV, $sPath, $iIndex)
    Local $iLWindex = 0
    If StringLen($sPath) <= 3 Then
    Switch DriveGetType($sPath)
    Case 'Fixed'
    $iLWindex = 5
    Case 'CDROM'
    $iLWindex = 6
    Case 'RAMDisk'
    $iLWindex = 7
    Case 'Removable'
    $iLWindex = 4
    If $sPath = 'a:' Or $sPath = 'b:' Then $iLWindex = 3
    Case Else
    $iLWindex = 8
    EndSwitch
    EndIf
    Local $hLocalTVNode = _GUICtrlTreeView_Add($idTV, $idTV, $sPath, $iLWindex, $iLWindex)
    If DriveStatus($sPath) <> 'READY' Then Return
    If _GUICtrlTreeView_BeginUpdate($idTV) And _GUICtrlTreeView_FileExplorer($idTV, $hLocalTVNode, $sPath) Then _GUICtrlTreeView_EndUpdate($idTV)
    EndFunc ;==>_PopulateTV_Local

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

    Func _PopulateLV_Local($sPath)
    _GUICtrlListView_DeleteAllItems($hWndLVLocal)
    Local $aFiles = _FileListToArray($sPath), $sAttr, $sDate, $sSize
    Local $iDirs = 0
    Local $iIndex
    If IsArray($aFiles) Then
    _GUICtrlListView_BeginUpdate($hWndLVLocal)
    For $i = 1 To $aFiles[0]
    $sAttr = FileGetAttrib($sPath & $Delim & $aFiles[$i])
    If $iHidden And StringInStr($sAttr, 'H') Then ContinueLoop
    If $iSuperHidden And StringInStr($sAttr, 'S') Then ContinueLoop
    $sSize = _StringAddThousandsSep(FileGetSize($sPath & $Delim & $aFiles[$i]))
    $sDate = _FormatDate(FileGetTime($sPath & $Delim & $aFiles[$i]))
    If StringInStr($sAttr, 'D') Then
    $iIndex = _GUICtrlListView_InsertItem($hWndLVLocal, $aFiles[$i], $iDirs, $FOLDER_ICON_INDEX, 4)
    $iDirs += 1
    Else
    $iIndex = _GUICtrlListView_InsertItem($hWndLVLocal, $aFiles[$i], -1, _GUIImageList_GetFileIconIndex($sPath & $aFiles[$i], False))
    EndIf
    If $iIndex <> -1 Then
    _GUICtrlListView_SetItemText($hWndLVLocal, $iIndex, $sSize, 1)
    _GUICtrlListView_SetItemText($hWndLVLocal, $iIndex, $sDate, 2)
    _GUICtrlListView_SetItemText($hWndLVLocal, $iIndex, $sAttr, 3)
    EndIf
    Next
    _GUICtrlListView_EndUpdate($hWndLVLocal)
    EndIf
    EndFunc ;==>_PopulateLV_Local

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

    Func _GetLocalTVPath()
    AdlibUnRegister('_GetLocalTVPath')
    $sOldPathLocalTV = $sPathLocalTV
    Local $iItemIndex = _GUICtrlTreeView_GetSelection($idTVLocal)
    If $iItemIndex = 0 Then _GUICtrlTreeView_SelectItemByIndex($idTVLocal, $idTVLocal, 1)
    $sPathLocalTV = StringReplace(_GUICtrlTreeView_GetTree($idTVLocal, $iItemIndex), $Delim1, $Delim) & $Delim
    If $sPathLocalTV <> $sOldPathLocalTV Then
    ;Klickgeräusch einfügen
    _PopulateLV_Local($sPathLocalTV)
    $sOldPathLocalTV = $sPathLocalTV
    EndIf
    AdlibRegister('_GetLocalTVPath')
    EndFunc ;==>_GetLocalTVPath

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

    Func _FormatDate($aDate)
    Return $aDate[2] & '.' & $aDate[1] & '.' & $aDate[0] & ' ' & $aDate[3] & ':' & $aDate[4]
    EndFunc ;==>_FormatDate

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

    Func _GUICtrlTreeView_FileExplorer($hTreeview, $hITEM, $sPath)
    ;Original aus Oscar
    Local $hLocalTVNode
    Local $sFileList, $sFolderList, $aDirList, $hSearch, $sFile
    ;Local $iHidden = RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden') - 1
    ;Local $iSuperHidden = Not RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden')
    ;jetzt global da auch für TV verwendet
    $hSearch = FileFindFirstFile($sPath & $Delim & '*')
    If $hSearch = -1 Then Return True
    Do
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    Switch @extended
    Case False
    If $iHidden And StringInStr(FileGetAttrib($sPath & $Delim & $sFile), 'H') Then ContinueLoop
    If $iSuperHidden And StringInStr(FileGetAttrib($sPath & $Delim & $sFile), 'S') Then ContinueLoop
    $sFileList &= $sFile & $Delim1
    Case True
    If _IsReparsePoint($sPath & $Delim & $sFile) Then ContinueLoop
    $sFolderList &= $sFile & $Delim1
    EndSwitch
    Until False
    FileClose($hSearch)
    If $sFolderList & $sFileList = '' Then Return True
    $aDirList = StringSplit(StringTrimRight($sFolderList & $sFileList, 1), $Delim1, 2)
    For $i = 0 To UBound($aDirList) - 1
    If StringInStr(FileGetAttrib($sPath & $Delim & $aDirList[$i]), 'D') Then
    $hLocalTVNode = _GUICtrlTreeView_AddChild($hTreeview, $hITEM, $aDirList[$i], 0, 1)
    If $aDirList[$i] = 'Musikdownload' Then
    ConsoleWrite('Musikdownload:' & $hLocalTVNode & @CRLF)
    EndIf
    Else
    ; _GUICtrlTreeView_AddChild($hTreeview, $hITEM, $sFile, 2, 2)
    ;werden bei mir nicht im LV angezeigt da im TV
    EndIf
    Next
    Return True
    EndFunc ;==>_GUICtrlTreeView_FileExplorer

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $hWndFrom = $ilParam
    Local $iCode = _WinAPI_HiWord($iwParam)
    Local $hWndTVLocal = GUICtrlGetHandle($idLVLocal)
    Local $hWndLVLocal = GUICtrlGetHandle($idLVLocal)
    Local $hWndTVFTP = GUICtrlGetHandle($idLVFTP)
    Local $hWndLVFTP = GUICtrlGetHandle($idLVFTP)
    Switch $iCode
    Case $EN_SETFOCUS
    Switch $hWndFrom
    Case $hWndLVFTP
    $iActiveLV = $idLVFTP
    Case $hWndLVLocal
    $iActiveLV = $idLVLocal
    Case $hWndTVFTP
    $iActiveTV = $idTVFTP
    Case $hWndTVLocal
    $iActiveTV = $idTVLocal
    Case Else
    $iActiveLV = -99
    $iActiveTV = -99
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

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

    Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    ;Original Oscar
    Local $iAction, $hChild, $hITEM, $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW, $ilParam)
    Local $tagNMHDR = DllStructCreate("int;int;int", $ilParam)
    Local $aItem
    If @error Then Return 0
    Local $code = DllStructGetData($tagNMHDR, 3)
    Switch $iwParam
    Case $idTVLocal
    $iActiveTV = $idTVLocal
    Switch $code ;DllStructGetData($tNMTREEVIEW, 'Code')
    Case $TVN_ITEMEXPANDINGA, $TVN_ITEMEXPANDINGW
    $iAction = DllStructGetData($tNMTREEVIEW, 'Action')
    Switch $iAction
    Case $TVE_EXPAND
    If ToolTip('Please wait...', Default, Default, 'Read Directory', 1) Then $hITEM = DllStructGetData($tNMTREEVIEW, 'NewhItem')
    If _GUICtrlTreeView_GetExpanded($idTVLocal, $hITEM) Then Return $GUI_RUNDEFMSG
    $hChild = _GUICtrlTreeView_GetFirstChild($idTVLocal, $hITEM)
    If Not $hChild Then Return $GUI_RUNDEFMSG
    If _GUICtrlTreeView_BeginUpdate($idTVLocal) Then _GUICtrlTreeView_DeleteChildren($idTVLocal, $hChild)
    _GUICtrlTreeView_FileExplorer($idTVLocal, $hChild, StringReplace(_GUICtrlTreeView_GetTree($idTVLocal, $hChild), $Delim1, $Delim))
    Do
    $hChild = _GUICtrlTreeView_GetNextChild($idTVLocal, $hChild)
    If Not $hChild Then ExitLoop
    _GUICtrlTreeView_DeleteChildren($idTVLocal, $hChild)
    _GUICtrlTreeView_FileExplorer($idTVLocal, $hChild, StringReplace(_GUICtrlTreeView_GetTree($idTVLocal, $hChild), $Delim1, $Delim))
    Until False
    If _GUICtrlTreeView_EndUpdate($idTVLocal) Then ToolTip('')
    EndSwitch
    Case Else
    ;ConsoleWrite('TV akt. Itemhandle: '&_GUICtrlTreeView_GetItemHandle($idTVLocal)&@CRLF)
    EndSwitch
    Case $idLVLocal
    $iActiveLV = $idLVLocal
    Switch $code
    ;case $NM_RCLICK ,$NM_DBLCLK, ;Rechtsklick, DoppelKlick
    Case $NM_DBLCLK ;DoppelKlick
    _DblClick($idLVLocal)
    EndSwitch
    Case $idTVFTP
    $iActiveTV = $idTVFTP
    Case $idLVFTP
    $iActiveLV = $idLVFTP
    Switch $code
    ;case $NM_RCLICK ,$NM_DBLCLK, ;Rechtsklick, DoppelKlick
    Case $NM_DBLCLK ;DoppelKlick
    _DblClick($idLVFTP)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_NOTIFY

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

    Func _DblClick($idLV)
    Local $sCC = ControlGetFocus($hGUI)
    If Not StringInStr($sCC, 'SysListView32') Then Return
    Local $aLVItem = _GUICtrlListView_GetItemTextArray($idLV)
    Local $sActItem = StringReplace(StringReplace(_GUICtrlTreeView_GetTree($idTVLocal), $Delim1, $Delim), '\\', '\')
    Local $hTVItem = _GUICtrlTreeView_FindItem($idTVLocal, $aLVItem[1])
    ConsoleWrite($sActItem & ' TVItem: ' & $hTVItem & ' [' & $aLVItem[1] & ']' & @CRLF)
    _GUICtrlTreeView_SelectItem($hWndTVLocal, $hTVItem)
    EndFunc ;==>_DblClick
    #cs
    Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    ;Oscar's Original
    Local $iAction, $hChild, $hITEM, $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW, $ilParam)
    If DllStructGetData($tNMTREEVIEW, 'hWndFrom') = $hWndTVLocal Then
    Switch DllStructGetData($tNMTREEVIEW, 'Code')
    Case $TVN_ITEMEXPANDINGA, $TVN_ITEMEXPANDINGW
    $iAction = DllStructGetData($tNMTREEVIEW, 'Action')
    Switch $iAction
    Case $TVE_EXPAND
    If ToolTip('Please wait...', Default, Default, 'Read Directory', 1) Then $hITEM = DllStructGetData($tNMTREEVIEW, 'NewhItem')
    If _GUICtrlTreeView_GetExpanded($idTVLocal, $hITEM) Then Return $GUI_RUNDEFMSG
    $hChild = _GUICtrlTreeView_GetFirstChild($idTVLocal, $hITEM)
    If Not $hChild Then Return $GUI_RUNDEFMSG
    If _GUICtrlTreeView_BeginUpdate($idTVLocal) Then _GUICtrlTreeView_DeleteChildren($idTVLocal, $hChild)
    _GUICtrlTreeView_FileExplorer($idTVLocal, $hChild, StringReplace(_GUICtrlTreeView_GetTree($idTVLocal, $hChild), $Delim1, $Delim))
    Do
    $hChild = _GUICtrlTreeView_GetNextChild($idTVLocal, $hChild)
    If Not $hChild Then ExitLoop
    _GUICtrlTreeView_DeleteChildren($idTVLocal, $hChild)
    _GUICtrlTreeView_FileExplorer($idTVLocal, $hChild, StringReplace(_GUICtrlTreeView_GetTree($idTVLocal, $hChild), $Delim1, $Delim))
    Until False
    If _GUICtrlTreeView_EndUpdate($idTVLocal) Then ToolTip('')
    Case Else
    ;;ConsoleWrite('Action:' & $iAction & @CRLF)
    EndSwitch
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_NOTIFY
    #ce
    Func _IsReparsePoint($FLS)
    ; Author: progandy (http://www.autoit.de)
    Dim Static $K32 = DllOpen('kernel32.dll')
    Dim $DA = DllCall($K32, 'dword', 'GetFileAttributesW', 'wstr', $FLS)
    If @error Then Return SetError(1, @error, False)
    Return BitAND($DA[0], 1024) = 1024
    EndFunc ;==>_IsReparsePoint

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

    ; Author: progandy (http://www.autoit.de)
    Func _GUIImageList_GetSystemImageList($bLargeIcons = False)
    Local $dwFlags, $hIml, $FileInfo = DllStructCreate($tagSHFILEINFO)
    $dwFlags = BitOR($SHGFI_USEFILEATTRIBUTES, $SHGFI_SYSICONINDEX)
    If Not ($bLargeIcons) Then
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf
    ;~ '// Load the image list - use an arbitrary file extension for the
    ;~ '// call to SHGetFileInfo (we don't want to touch the disk, so use
    ;~ '// FILE_ATTRIBUTE_NORMAL && SHGFI_USEFILEATTRIBUTES).
    $hIml = _WinAPI_SHGetFileInfo(".txt", $FILE_ATTRIBUTE_NORMAL, _
    DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), $dwFlags)
    Return $hIml
    EndFunc ;==>_GUIImageList_GetSystemImageList

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

    ; Author: progandy (http://www.autoit.de)
    Func _WinAPI_SHGetFileInfo($pszPath, $dwFileAttributes, $psfi, $cbFileInfo, $uFlags)
    Local $return = DllCall("shell32.dll", "dword_ptr", "SHGetFileInfo", "str", $pszPath, "DWORD", $dwFileAttributes, "ptr", $psfi, "UINT", $cbFileInfo, "UINT", $uFlags)
    If @error Then Return SetError(@error, 0, 0)
    Return $return[0]
    EndFunc ;==>_WinAPI_SHGetFileInfo

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

    ; Author: progandy (http://www.autoit.de)
    Func _GUIImageList_GetFileIconIndex($sFileSpec, $bLargeIcons = False, $bForceLoadFromDisk = False)
    Local $dwFlags, $FileInfo = DllStructCreate($tagSHFILEINFO)
    $dwFlags = $SHGFI_SYSICONINDEX
    If $bLargeIcons Then
    $dwFlags = BitOR($dwFlags, $SHGFI_LARGEICON)
    Else
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf
    ;~ ' We choose whether to access the disk or not. If you don't
    ;~ ' hit the disk, you may get the wrong icon if the icon is
    ;~ ' not cached. But the speed is very good!
    If Not $bForceLoadFromDisk Then $dwFlags = BitOR($dwFlags, $SHGFI_USEFILEATTRIBUTES)
    ;~ ' sFileSpec can be any file. You can specify a
    ;~ ' file that does not exist and still get the
    ;~ ' icon, for example sFileSpec = "C:\PANTS.DOC"
    Local $lR = _WinAPI_SHGetFileInfo( _
    $sFileSpec, $FILE_ATTRIBUTE_NORMAL, DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
    $dwFlags _
    )
    If ($lR = 0) Then
    Return SetError(1, 0, -1)
    Else
    Return DllStructGetData($FileInfo, "iIcon")
    EndIf
    EndFunc ;==>_GUIImageList_GetFileIconIndex

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

    Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
    If $sString = '-' Then Return $sString ; This Line is only for FileCommander
    Local $sResult = "" ; Force string
    Local $rKey = "HKCU\Control Panel\International"
    If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
    If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
    Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ;
    ;This one works for negatives.
    If UBound($aNumber) = 2 Then
    Local $sLeft = $aNumber[0]
    While StringLen($sLeft)
    $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
    $sLeft = StringTrimRight($sLeft, 3)
    WEnd
    $sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

    [/autoit]

    mfg autoBert

  • Listbox Suchfunktion ?

    • autoBert
    • 5. April 2013 um 22:21

    Schau dir dazu IntelliSenseBox an.

    mfg autoBert

  • "Best of" Bilder Script

    • autoBert
    • 5. April 2013 um 21:03

    zu:

    • such dir eine der _FileListToArrayRekursiv-Lösungen hier im Forum. Da im zurückgegebenen Array der komplette Pfad steht braucht es keinen Ordnerwechsel
    • [autoit]GUICtrlCreatePic
      GUICtrlSetImage[/autoit]genügen für JPG's
    • mit GDI+ bzw. mit der GUICtrlPic.au3 von Großvater

    mfg autoBert

  • Countdown und Progressbar

    • autoBert
    • 5. April 2013 um 20:45

    Hallo Abraham,

    ich habe mal deine Zeitausgabe und die Progressbar synchronisiert:

    Spoiler anzeigen
    [autoit]

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

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

    $fill = 15000

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

    GUICreate("My GUI")

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

    GUISetState()
    $idLblRest = GUICtrlCreateLabel("Zeit : ", 5, 5, 60, 20)
    $idBtnCountDown = GUICtrlCreateButton("Countdown", 10, 35, 100, 22)
    $idProgress = GUICtrlCreateProgress(70, 5, 200, 20)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $idBtnCountDown
    $iSec = 30000
    $iRest = $iSec
    GUICtrlSetData($idLblRest, "Zeit : " & Int($iRest / 1000) & " sec")
    GUICtrlSetData($idProgress, 0)
    $iStart = TimerInit()
    _sleep()
    $iDiff = TimerDiff($iStart)
    ConsoleWrite($iDiff&@CRLF)
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _sleep()
    Local $iStart = TimerInit(), $iDiff
    Do
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit ;damit das Programm auch beendet werden kann
    Sleep(10)
    $iDiff = TimerDiff($iStart)
    Until $iDiff > 995
    $iRest -= $iDiff
    GUICtrlSetData($idLblRest, "Zeit : " & Int($iRest / 1000) & " sec")
    GUICtrlSetData($idProgress, 100 - ($iRest / $iSec * 100))
    If $iRest > 0 Then _Sleep()
    EndFunc ;==>_sleep

    [/autoit]

    viel Spass damit autoBert

  • StringSplit Problem

    • autoBert
    • 5. April 2013 um 13:57
    Zitat von Ilse

    Kann man bei einer Gui einen Button mit einem Hotkey auslösen?

    Ja.
    Am einfachsten ist es direkt in der Beshriftung einen Hotkey zu setzen, einfach ein "&" vor dem gewünschten HotkeyBuhstaben erlaubt es dem Benutzer mit <ALT>+<Buchststabe> den Button auszuählen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $Button_1, $Button_2, $msg
    GUICreate("My GUI Button") ; will create a dialog box that when displayed is centered

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

    Opt("GUICoordMode", 2)
    $Button_1 = GUICtrlCreateButton("&Run Notepad", 10, 30, 100)
    $Button_2 = GUICtrlCreateButton("Button &Test", 0, -1)

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

    GUISetState() ; will display an dialog box with 2 button

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button_1
    Run('Notepad.exe') ; Will Run/Open Notepad
    Case $msg = $Button_2
    MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
    EndSelect
    WEnd
    EndFunc ;==>Example

    [/autoit]

    mfg autoBert

  • Email / Hyperlink anklicken

    • autoBert
    • 5. April 2013 um 00:16
    Zitat von butter

    Ich brauche eig nur die wichtigsten Funktionen, nicht das komplette Script ..


    Du hast doch schon die Links zum lesen. Wenn du Outlook als EMailclient benutzt ist auch Water's OutlookEx.au3 (siehe Signatut von Water) eine Möglichkeit. Auch Oscars Popshow (im Forum Skripte) kann eine Grundlage sein sie zeigt das Abrufen von POP3-Postfächern zusammen mit der _INetSmtpMailCom.au3 (auch in diesem Forum zu finden) kannst du dir eine Lösung basteln oder weiterhin manuell deine EMails bestätigen.

    Du solltest dich erst wieder melden, wenn du ein Skript hast bei dem etwas nicht funktioniert, denn dann ist eine Grundlage da bei der geholfen werden kann.

    mfg autoBert

  • Bilder Slideshow für Willkommensbildschirm

    • autoBert
    • 5. April 2013 um 00:03

    Hallo Jasfar,

    schau dir [Beispiel] BMP-, GIF-, PNG- & JPG-Viewer (Stand: 10.02.2012) an, ist zwar keine Slideshow sollte dir aber die richtigen Ideen bringen.

    mfg autoBert

  • Email / Hyperlink anklicken

    • autoBert
    • 4. April 2013 um 23:57
    Zitat von butter

    Wie ist es dort möglich die email im textformat anzuzeigen?
    Ausserdem nach was suche ich den bestätigungslink? http:// und weiter? :x


    Du meinst also andere sollen sich Gedanken und Arbeit machen damit du leichter Geld verdienst?
    Dann solltest du in Programmieranfragen mit Gegenleistung ein Thema erstellen.

    @Mod/Admin: bitte wegen mangenlder Selbstbeteiligung schliessen

    mfg autoBert

  • Email / Hyperlink anklicken

    • autoBert
    • 4. April 2013 um 20:42
    Zitat von butter

    Es sind mehrere Accounts, von verschiedenen Websiten (Ja, diese Websiten sind Legal :] )


    Ist dein Vorhaben auch mit den AGB dieser Seiten kompatibel?

    mfg autoBert

  • Download via Proxy

    • autoBert
    • 4. April 2013 um 18:37
    Zitat von Scheffi

    habe ein Problem mit folgendem Code (lief gestern Abend noch ...)


    Dann nimm deinen Sicherungsstand von gestern abend.

    Zitat von Scheffi

    Ohne Proxy geht das Script, mit nicht mehr - Proxy funktioniert aber im FF


    Welche Fehlermeldungen treten jetzt auf? Hast du zwischen gestern abend und heute den Proxy eingebaut oder geändert?

    mfg autoBert

  • Editbox aktualisieren

    • autoBert
    • 4. April 2013 um 13:14

    Hier ein Beispiel in dem solche Datumsfelder vorkommen:

    Spoiler anzeigen
    [autoit]


    #include <StaticConstants.au3>
    #include <date.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Opt('GUIOnEventMode', 1)

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

    Global $sTitel = 'Beispiel um Zeiten zu vergleichen'

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

    Local $hMainGui = GUICreate($sTitel, 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    ;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $hMainGui gespeichert
    ;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    ;Verknüpft dem Event $Gui_Event_Close mit der Funktion _End

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

    ;Menübar anzeigen
    Global $menu_help = GUICtrlCreateMenu("?", -1, 1)
    Global $item_help_auto = GUICtrlCreateMenuItem("Autor: (Auto)Bert", $menu_help)
    Global $item_help_exit = GUICtrlCreateMenuItem("Beenden", $menu_help)
    GUICtrlSetOnEvent(-1, '_End')

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

    Local $hedtFrom = GUICtrlCreateDate("01/01/2009 18:45:56", 20, 10, 175, 25, $DTS_UPDOWN)
    ;erzeugt ein From Steuerelement die zurückgegebene ID wird in der Variablen $hedtFrom gespeichert
    Local $DTM_SETFORMAT_ = 0x1032
    Local $style = "dd/MM/yyyy HH:mm:ss"
    GUICtrlSendMsg($hedtFrom, $DTM_SETFORMAT_, 0, $style)
    GUICtrlSetFont(-1, 12)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    ;verankert das From Steuerelement Links, rechts, oben und fixiert die Höhe
    ;beim Resizen bleibt es dadurch auf seiner Position und ändert nur die Breite
    Local $hedtTo = GUICtrlCreateDate("01.01.2009", 20, 40, 175, 25, $DTS_UPDOWN)
    ;erzeugt ein To Steuerelement die zurückgegebene ID wird in der Variablen $hedtTo gespeichert
    GUICtrlSendMsg($hedtTo, $DTM_SETFORMAT_, 0, $style)
    GUICtrlSetFont(-1, 12)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    ;verankert das To Steuerelement Links, rechts, oben und fixiert die Höhe
    ;beim Resizen bleibt es dadurch auf seiner Position und ändert nur die Breite

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

    GUICtrlCreateButton('&prüfen', 220, 10, 150, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    ;verankert den Button "Prüfen" rechts und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    GUICtrlSetOnEvent(-1, '_CheckDate')
    ;Beim Klicken des Buttons wird die Funktion _CheckTime aufgerufen

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

    Local $hlblErgebnis = GUICtrlCreateLabel("hier steht danach das Ergebnis", 12, 80, 200,200)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert das Label links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    GUICtrlCreateButton('Be&enden', 220, 115, 150, 25)
    GUICtrlSetOnEvent(-1, '_END')
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)

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

    GUICtrlCreateGraphic(0, 230, 400, 2, $SS_BLACKRECT)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM)
    Global $hStatus = GUICtrlCreateLabel("", 5, 235, 400, 25)

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

    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM)
    ;verankert das Label Links, rechts und unten; fixiert die Höhe
    ;beim Resizen bleibt es dadurch auf seiner Position und ändert nur die Breite wird angepasst
    GUISetState()

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

    While 1
    Sleep(120)
    WEnd

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

    Func _End()
    GUIDelete($hMainGui)
    Exit
    EndFunc ;==>_End

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

    Func _CheckDate()
    Local $dtNow = _NowCalc()
    ConsoleWrite($dtNow & @CRLF)
    LOCAL $sCheckFrom = GUICTRLREAD($HEDTFrom)
    LOCAL $sCheckTo = GUICTRLREAD($HEDTTo)
    if $sCheckFrom > $sCheckTo Then
    $sCheckFrom = $sCheckTo
    $sCheckTo = GUICTRLREAD($HEDTFrom)
    EndIf
    ConsoleWrite($sCheckFrom & @CRLF)
    ConsoleWrite($sCheckTo & @CRLF)
    LOCAL $dtFrom = _Date2Str($sCheckFrom)
    ConsoleWrite($dtFrom & @crlf)
    LOCAL $dtTo = _Date2Str($sCheckTo)
    ConsoleWrite($dtTo & @crlf)
    $sErg = $dtNow & @CRLF
    Select
    Case $dtNow >= $dtFrom and $dtNow <= $dtTo
    $sErg &= "liegt zwischen den"
    case $dtNow <= $dtFrom or $dtNow >= $dtTo
    $sErg &= "liegt ausserhalb den"
    case $dtNow = $dtFrom and $dtNow = $dtTo
    $sErg &= "entspricht den"
    EndSelect
    $sErg &= " beiden Terminen" & @CRLF & $dtFrom & @CRLF & $dtTo
    GUICtrlSetData($hlblErgebnis,$sErg)
    EndFunc ;==>_CallEaster

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

    Func _Date2Str($DateTime)
    Return StringMid($DateTime,7,4)&"/" & STRINGMID($DateTime,4,2) & "/" & STRINGLEFT($DateTime,2) & " " & StringRight($DateTime,8)
    EndFunc

    [/autoit]

    mfg autoBert

  • Gesammtfortschritt anzeige

    • autoBert
    • 4. April 2013 um 13:06

    Schau dir dazu [Beispiel] Gesamtfortschritt mehrer Downloads anzeigen an. Die daran befindlichen Downloadadressen musst du warscheins aktualisieren.

    Zitat von Caven

    Und beim Patcher dachte ich an sowas ähnliches, das er irgendwie zusammen rechnet.. Nur grenzt das an meinen Kenntnissen.
    Kann mir da jemand helfen?

    Den Code möchte ich nicht öffentlich stellen weil dafür eben Geld bezahlt habe.. Hoffe auf verständnis

    Sollte obiges Beispiel dir auch nicht genügen musst du wohl oder übel wieder auf bezahlte Hilfe für deinen Metin2-Patcher zurückgreifen. Mein INet ist immer noch das gleiche, ich komme also wieder nicht in Frage.

    mfg autoBert

  • Buttons mit Farbänderung

    • autoBert
    • 3. April 2013 um 19:48
    Zitat von luxor63

    Eine weiter Frage die sich mit stellt kann man den Codeteil mit dem Switch verbessern?
    Ich benötige Später nicht 4 Buttons sondern einige Hundert.


    Du musst dazu in einem 2D-Array die ControlId und den Zustand eintragen. Hier die daraus resultierende Kurzfassung:

    Spoiler anzeigen

    [autoit#include <GUIConstantsEx.au3>

    Global $aBtnIds[9][3]
    $aBtnIds[0][2] = "0101"
    $aBtnIds[1][2] = "0100"
    $aBtnIds[2][2] = "0110"
    $aBtnIds[3][2] = "1100"


    $hGui = GUICreate('Buttontest', 105, 105)
    For $i = 0 To 8
    $aBtnIds[$i][0] = GUICtrlCreateButton($i + 1, 10 + Mod($i, 3) * 30, 10 + Int($i / 3) * 30, 25, 25)
    Next
    GUISetState()

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $aBtnIds[0][0] To $aBtnIds[8][0]
    _Toggle($msg - $aBtnIds[0][0])
    EndSwitch
    WEnd

    Func _Toggle($iBtn)
    If $aBtnIds[$iBtn][1] Then
    GUICtrlSetBkColor($aBtnIds[$iBtn][0], 0x990000)
    Else
    GUICtrlSetBkColor($aBtnIds[$iBtn][0], 0x059122)
    EndIf
    $aBtnIds[$iBtn][1] = Not $aBtnIds[$iBtn][1]
    MsgBox(0, 'Button', 'No. ' & $aBtnIds[$iBtn][0] + 1 & ' was clicked'&@CRLF&'Var: '&$aBtnIds[$iBtn][2]&@CRLF&'True/False: '&$aBtnIds[$iBtn][1], 0, $hGui)
    EndFunc ;==>_Toggle[/autoit]

    mfg autoBert

  • Editbox aktualisieren

    • autoBert
    • 3. April 2013 um 14:09
    Zitat von Tullamore

    Kann ich die Checkboxen auch in einer Group anlegen, und dann mit der gleichen Func über StringReplace vorgehen?


    Radios und Checkboxen werden mit den gleichen Funktionen ausgelesen und auch gesetzt, also ja.

    Zitat von Tullamore

    Als blutiger Anfänger fällt es mir
    immer noch schwer, etwas ganz neues auf die Beine zu stellen.


    Dann solltest du dir anhand der Hilfe oder der dt. Hilfeübersetzung die Grundlagen erarbeiten, zumindest die Beispiele der im Skript verwendeten Funktionen durcharbeiten und auch eigene Änderungen daran testen.

    mfg autoBert

  • Editbox aktualisieren

    • autoBert
    • 3. April 2013 um 13:21
    Zitat von Tullamore

    Hmmmmm.....darf ich fragen, warum die Checkboxen besser sind?


    Weil Scheckboxen standardmässig Mehrfachauswahl zulassen, bei Radios dagegen kann nur eines innerhalb einer Group aktiv sein.

    mfg autoBert

  • In String nach "Votes :" suchen, und das darauf folgende zurückgeben

    • autoBert
    • 3. April 2013 um 03:31
    Zitat von v1Dr333s

    Mit StringInStr geht das doch nicht, oder ?


    Kann nützlich sein:

    Zitat

    StringInStr

    Prüft, ob ein String einen angegebenen Unterstring enthält.
    ...
    Erfolg: Gibt die Position des Unterstrings zurück.

    dadurch weist du schon die Position von "Votes: " von hier aus ist alles nur noch abzählen unter Zuhilfenahme eines 2. StringInStr:

    [autoit]

    $sVotes = "blabla irgendwas Votes: 123 bla bla irgendwas."
    $iPos = StringInStr($sVotes,"Votes: ")
    $sVotes2 = StringMid($sVotes,$iPos+7)
    $sVotes= StringLeft($sVotes2,StringInStr($sVotes2," ")-1)
    MsgBox(0,'Votes:',$sVotes)

    [/autoit]

    eine andere Möglichkeit:

    [autoit]

    $sVotes = "blabla irgendwas Votes: 123 bla bla irgendwas."
    $aTmp = StringSplit($sVotes, "Votes: ", 3)
    If IsArray($aTmp) Then
    $aVotes = StringSplit($aTmp[1], " ", 3)
    If IsArray($aVotes) Then
    MsgBox(0, 'Votes:', $aVotes[0])
    Else
    MsgBox(0, 'Votes:', 'keine Votes gefunden!')
    EndIf
    Else
    MsgBox(0, 'Votes:', 'keine Votes gefunden!')
    EndIf

    [/autoit]

    die kürzeste Lösung hat dir ja bereits die Schachkatze gezeigt.

    mfg autoBert

  • Zitate für das Forum formatieren

    • autoBert
    • 3. April 2013 um 01:48
    Zitat von chesstiger

    "Wir sind doch im Prinzip alle Schokoriegel."

    Marsi (01.04.2013, 22:41)


    Aber keiner gibt so schnell verbrauchte Energie zurück wie Mars.

  • in ein Fremdes Programm per Control einen Button setzen

    • autoBert
    • 3. April 2013 um 01:30
    Zitat von Raupi

    Der blöde FF hat es auch nicht angezeigt. Scheiß Browser, der verheimlicht mir öfter mal was.


    Du musst dir die Spezialedition des FF von Spiegel.de holen, die ist gnadenlos ehrlich und kennt sogar die Antwort auf "Spieglein, Spieglein an der Wand wer ist der beste Maler im Land?" :D

  • Themida stürtzt immer ab.

    • autoBert
    • 2. April 2013 um 16:55
    Zitat von General Kaboom
    Spoiler anzeigen


    Nicht ganz 100%ig korrekt. Musste zuerst auch nachsehen, aber Themida ist tatsächlich ein mit AutoIt geschriebenes Programm. Allerdings im Englischen Forum veröffentlicht.

    http://www.autoitscript.com/forum/topic/10…t-3320-themida/

    Dann würde es zwar zu AutoIt passen, aber nicht in Hilfe & Unterstützung da kein Skript beiliegt.

    Zitat von General Kaboom

    Warte, hoppla da hab ich mich im lesen vertan, sorry :pinch:

    Dehalb gilt immer noch:

    @Mod's/Admins: bitte nach Offtopic verschieben da kein AutoIt spezifisches Problem

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™