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

Beiträge von Oscar

  • StringRegExp = Findet jedes einzelne Zeichen (AUCH Zeilenumbrüche).

    • Oscar
    • 20. Oktober 2016 um 11:40
    Zitat von Muecke

    Die Lösung von Bioshade finde ich gut, jedoch bekomme ich dann noch eine Nummer die weiter unten im Code Steht auch mit aufgelistet, somit etwas zu viel Infos.

    Bei RegExp-Pattern ist u.U. der komplette Quelltext wichtig.
    Nur mit Deinem Schnipsel ist das Pattern von Bioshade korrekt!
    Wenn in Deinem Quelltext mehrere mögliche Treffer für das Pattern passen, dann bekommst Du nunmal auch mehrere Ergebnisse.

    Als Tip für's nächste Mal: Poste den kompletten Quelltext (oder einen Link dorthin)!

  • Absturz ListView-Bewegung

    • Oscar
    • 20. Oktober 2016 um 11:04
    Zitat von Gremlin78

    Danach stürzt das Programm leider beim Verschieben ab.

    Einen Absturz konnte ich nicht beobachten (AutoIt v3.3.14.2), aber wenn Du nicht die Befehle der UDF verwendest, dann musst Du vorher den Speicher leeren (_GUIListViewEx_Close).


    AutoIt
    #include <GUIConstantsEx.au3>
    #include <GUIListViewEx.au3>
    Example()
    Func Example()
    	GUICreate("listview items", 220, 250, 100, 200)
    	Local $idListview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 200, 200)
    	Local $idItem1 = GUICtrlCreateListViewItem("item1|col12|col13", $idListview)
    	Local $idItem2 = GUICtrlCreateListViewItem("item2|col22|col23", $idListview)
    	Local $idItem3 = GUICtrlCreateListViewItem("item3|col32|col33", $idListview)
    	Local $idButton = GUICtrlCreateButton("1 more", 10, 220, 200, 20)
    	GUISetState(@SW_SHOW)
    	_GUIListViewEx_MsgRegister()
    	Local $idLV = _GUIListViewEx_Init($idListview, '', 0, 0, True)
    	While 1
    		Switch GUIGetMsg()
    			Case $GUI_EVENT_CLOSE
    				ExitLoop
    			Case $idButton
    				_GUIListViewEx_Close($idLV)
    				GUICtrlCreateListViewItem("item4|col42|col43", $idListview)
    				$idLV = _GUIListViewEx_Init($idListview, '', 0, 0, True)
    		EndSwitch
    	WEnd
    EndFunc   ;==>Example
    Alles anzeigen
  • Absturz ListView-Bewegung

    • Oscar
    • 20. Oktober 2016 um 08:41

    Wenn Du externe UDFs (GUIListViewEx.au3) verwendest, dann solltest Du diese posten.
    Ich könnte danach suchen, aber dann weiß ich nicht, welche Version Du verwendest.

  • $CmdLine Parameter als Größe für Dateiabgleich

    • Oscar
    • 18. Oktober 2016 um 08:41

    Also ich kann mit Deiner Beschreibung und den Codeschnipseln nichts anfangen.
    Alpines hat Dir bereits geschrieben, was Du in Dein Script einbauen musst, damit Du Kommandozeilen-Parameter auswerten kannst.
    Woran scheitert es denn jetzt?
    Wenn Du das nicht selbst einbauen kannst, dann bitte das Script posten.

  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 14. Oktober 2016 um 18:05

    Das war jetzt gar nicht so viel mehr Arbeit.
    Schau Dir mal die Datendatei "InstallCheck.txt" an. Dort habe ich diverse Kommentare zu deren Aufbau hinzugefügt.
    Die Kommentare kannst Du ruhig drin stehen lassen und auch eigene Kommentare hinzufügen. Wichtig ist nur, dass Kommentare mit einem Semikolon beginnen.
    Ich hoffe, Du verstehst den Aufbau. Ansonsten frag einfach.

    Dateien

    InstallCheck.zip 4,26 kB – 459 Downloads
  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 13. Oktober 2016 um 19:45

    Wie gesagt, es geht ja durchaus auch mit drei Spalten.
    Solange alle eure Rechner mit Monitoren ausgestattet sind, die eine Mindestauflösung von 1280x600 haben, ist alles ok.
    Dann können wir das so lassen.

    Kommen wir zu den Abteilungen. Wenn ich das richtig verstehe, dann gibt es 5 Abteilungen.
    Es gibt eine bestimmte Programm-Sammlung, die in allen Abteilungen installiert sein soll.
    Und dann gibt es Programme, die nur in einzelnen Abteilungen installiert werden.
    Ist das so korrekt?

  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 12. Oktober 2016 um 20:45
    Zitat von firewalldevil

    i.dR haben wir fullHD Monitore.

    Ich habe das gerade mal getestet.
    Bei 30 Programmen muss ich das auf drei Spalten aufteilen.
    Die benötigte Auflösung beträgt dann ca. 1280x600. Das würde dann die Mindestauflösung sein. Ist das ok?
    Hier mal ein Beispiel-Screenshot:
    InstallCheck.png

  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 12. Oktober 2016 um 11:32

    Bislang sieht das jetzt so aus:
    InstallCheck.png

    Ich habe jetzt noch einen Button zum aufrufen der Website (downloaden des Programms) hinzugefügt. Wenn keine Website angegeben ist, dann wird der Button deaktiviert.
    Ganz oben der Button ist zum erneuten testen der Installation.
    Der Button direkt hinter dem Programmnamen ruft das Installationsverzeichnis oder gleich die Installationsdatei auf (per ShellExecute).

    Es fehlt jetzt noch die Auswahl der Abteilung.
    Und noch ein paar Fragen:
    Wie viele Abteilungen werden das?
    Wie viele Programme (pro Abteilung) sollen dort eingetragen werden?
    Wie groß (Auflösung) sind die Monitore?

    Weil ich das bei zu vielen Programmen sonst mehrspaltig machen muss.

  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 11. Oktober 2016 um 08:13

    Das hättest Du mal gleich am Anfang schreiben sollen, dann hätte ich das anders aufgebaut.
    Es ist also kein Programm zum überwachen von Pfaden, sondern ein Installations-Check. Ich benenne es mal um in InstallCheck.

    Normalerweise prüft man das (Programme installiert Ja/Nein) über die Registry. Dort kann man auch Versionen unterscheiden.
    Nur bei Programmen, die sich nicht in die Registry eintragen, würde ich auf die Datei-Pfade ausweichen

    Zum Anderen gehe ich davon aus, dass das InstallCheck nicht permanent laufen soll, sondern nur um den Status zu checken.
    Somit kann ich mir das mit dem SHELLCHANGENOTIFY sparen. Das einlesen der Datendatei beim Start reicht ja aus.
    Und dauernd die Pfade zu überprüfen ist auch überflüssig.

    Für das Datenformat würde ich folgendes vorschlagen:
    1. Zeile: Name des Programms für den Eintrag in der Liste
    2. Zeile: Pfad in der Registry
    3. Zeile: Verzeichnis, in dem das Setup-Programm liegt
    Leerzeile (könnte man weglassen, sieht aber beim eingeben schöner aus, weil die Programme dann getrennt voneinander stehen)
    1. Zeile:
    2. Zeile:
    3. Zeile:
    Leerzeile
    usw...

  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 10. Oktober 2016 um 08:11

    Ok!

    Screenshot:
    FileCheck_Screenshot.png

    AutoIt
    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=FileCheck.exe
    #AutoIt3Wrapper_Res_Description=FileCheck
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Oscar (www.autoit.de)
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SendMessage.au3>
    #include <WinAPI.au3>
    #include <WinAPIShellEx.au3>
    #include <WindowsConstants.au3>
    
    
    OnAutoItExitRegister('OnAutoItExit')
    Opt('GUIOnEventMode', 1)
    
    
    Global $sTitle = 'FileCheck'
    Global $sVersion = '1.0.0.0'
    Global $sDate = '06.10.2016'
    Global $sDatafile = @ScriptDir & '\FileCheck.txt'
    
    
    Global $aFileFolder, $iCount = 0, $aidFileCheck[1][3]
    
    
    Global $hMainGui = GUICreate(StringFormat('%s v%3.3s', $sTitle, $sVersion), 730, 600, -1, -1) ; das Fenster erstellen
    GUISetBkColor(0xEEEEEE) ; Hintergrundfarbe für das Fenster festlegen
    GUISetIcon('shell32.dll', 23) ; Icon für das Fenster festlegen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseMainGui') ; Funktion die beim schließen des Fensters aufgerufen wird
    _ReadDatafile() ; die Datei mit den Datei-Pfaden einlesen und Gui-Elemente erstellen
    _CheckFileFolder() ; testen, ob die Pfade existieren
    GUISetState(@SW_SHOW, $hMainGui) ; das Fenster anzeigen
    
    
    Global $iMsg = _WinAPI_RegisterWindowMessage('SHELLCHANGENOTIFY') ; die Message bei Windows registrieren
    GUIRegisterMsg($iMsg, 'WM_SHELLCHANGENOTIFY') ; das Fenster für den Empfang der Message registrieren
    Global $g_iID = _WinAPI_ShellChangeNotifyRegister($hMainGui, $iMsg, $SHCNE_ALLEVENTS, BitOR($SHCNRF_INTERRUPTLEVEL, $SHCNRF_SHELLLEVEL, $SHCNRF_RECURSIVEINTERRUPT), @ScriptDir, 1) ; Windows mitteilen welches Verzeichnis überwacht werden soll
    If @error Then ; wenn das fehlschlägt, dann...
    	MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Fehler', '"ShellChangeNotifyRegister" ist fehlgeschlagen.')
    	Exit ; Programm mit Fehlermeldung beenden
    EndIf
    
    
    While Sleep(250) ; in einer Endlosschleife immer 250 ms warten und danach die Pfade auf Existenz testen
    	_CheckFileFolder()
    WEnd
    
    
    Func WM_SHELLCHANGENOTIFY($hWnd, $iMsg, $wParam, $lParam)
    	#forceref $hWnd, $iMsg
    	; diese Funktion wird aufgerufen, wenn sich im überwachten Verzeichnis (@ScriptDir) eine Datei ändert
    	Local $sPath = _WinAPI_ShellGetPathFromIDList(DllStructGetData(DllStructCreate('dword Item1; dword Item2', $wParam), 'Item1'))
    	; wenn die geänderte Datei mit der Datendatei übereinstimmt, dann...
    	If $sPath = $sDatafile Then _ReadDatafile() ; die Datei mit den Datei-Pfaden einlesen und Gui-Elemente neu erstellen
    EndFunc   ;==>WM_SHELLCHANGENOTIFY
    
    
    Func _CloseMainGui()
    	If MsgBox(4 + 32 + 256, $sTitle, 'Soll das Programm wirklich beendet werden?', 0, $hMainGui) = 7 Then Return
    	Exit
    EndFunc   ;==>_CloseMainGui
    
    
    Func OnAutoItExit()
    	If $g_iID Then _WinAPI_ShellChangeNotifyDeregister($g_iID)
    EndFunc   ;==>OnAutoItExit
    
    
    Func _CheckFileFolder()
    	For $i = 0 To $iCount - 1 ; Schleife, um alle Pfade aus der Datendatei durchzugehen
    		If FileExists($aFileFolder[$i]) Then ; wenn der Pfad existiert, dann...
    			If BitAND(GUICtrlGetState($aidFileCheck[$i][2]), $GUI_DISABLE) Then ; wenn der Button deaktiviert ist, dann...
    				GUICtrlSetState($aidFileCheck[$i][2], $GUI_ENABLE) ; Button aktivieren
    				GUICtrlSetBkColor($aidFileCheck[$i][0], 0x00FF00) ; und die Farbe auf grün setzen
    			EndIf
    		Else ; anderenfalls (Pfad existiert nicht)
    			If BitAND(GUICtrlGetState($aidFileCheck[$i][2]), $GUI_ENABLE) Then ; wenn der Button aktiviert ist, dann...
    				GUICtrlSetState($aidFileCheck[$i][2], $GUI_DISABLE) ; Button deaktivieren
    				GUICtrlSetBkColor($aidFileCheck[$i][0], 0xFF0000) ; und die Farbe auf rot setzen
    			EndIf
    		EndIf
    	Next
    EndFunc   ;==>_CheckFileFolder
    
    
    Func _ReadDatafile()
    	If $iCount <> 0 Then ; wenn sich auf dem Fenster bereits Gui-Elemente befinden, dann...
    		For $i = 0 To $iCount - 1 ; Schleife für die "Zeilen"
    			For $j = 0 To 2 ; Schleife für die "Spalten"
    				GUICtrlDelete($aidFileCheck[$i][$j]) ; alle Gui-Elemente löschen
    			Next
    		Next
    	EndIf
    	Local $sData = FileRead($sDatafile) ; Datei mit den Pfaden einlesen
    	$aFileFolder = StringSplit($sData, @CRLF, 3) ; und beim Zeilenumbruch splitten
    	$iCount = UBound($aFileFolder) - 1 ; Anzahl der Pfade merken
    	ReDim $aidFileCheck[$iCount][3] ; das Array neu dimensionieren
    	Local $aWinPos = WinGetPos($hMainGui), $aClientSize = WinGetClientSize($hMainGui) ; Position und Größe des Fensters holen
    	WinMove($hMainGui, '', $aWinPos[0], $aWinPos[1], $aClientSize[0], $iCount * 40 + 56) ; das Fenster in der Größe an die neue Anzahl anpassen
    	For $i = 0 To $iCount - 1 ; Schleife, um alle Pfade aus der Datendatei durchzugehen
    		$aidFileCheck[$i][0] = GUICtrlCreateLabel('', 20, 24 + $i * 40, 16, 16, Default, $WS_EX_STATICEDGE) ; Label für den Status (rot/grün) erstellen
    		GUICtrlSetBkColor(-1, 0xFF0000) ; erstmal auf rot setzen
    		$aidFileCheck[$i][1] = GUICtrlCreateInput('', 44, 20 + $i * 40, 600, 24, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_READONLY)) ; das Feld für den Pfad erstellen
    		GUICtrlSetBkColor(-1, 0xFFFFFF) ; Hintergrundfarbe auf weiß setzen
    		GUICtrlSetFont(-1, 12, 400, 0, 'Tahoma', 5) ; Schriftart und -größe festlegen
    		GUICtrlSetData(-1, $aFileFolder[$i]) ; den Pfad eintragen
    		$aidFileCheck[$i][2] = GUICtrlCreateButton('', 650, 18 + $i * 40, 48, 28, $BS_ICON) ; Button zum aufrufen des Ordners erstellen
    		GUICtrlSetImage(-1, 'shell32.dll', 23, 0) ; das Lupensymbol aus der Shell32.dll für den Button festlegen
    		GUICtrlSetOnEvent(-1, '_OpenFolder') ; diese Funktion wird aufgerufen, wenn auf den Button geklickt wird
    		GUICtrlSetState(-1, $GUI_DISABLE) ; den Button erstmal deaktivieren
    		GUICtrlSetTip(-1, 'Öffne Verzeichnis im Explorer') ; den Tooltip für den Button festlegen
    	Next
    EndFunc   ;==>_ReadDatafile
    
    
    Func _OpenFolder()
    	Local $iButton = (@GUI_CtrlId - $aidFileCheck[0][2]) / 3 ; ermitteln welcher Button angeklickt wurde
    	Local $sFolder
    	If StringInStr(FileGetAttrib($aFileFolder[$iButton]), 'D') Then ; wenn der Pfad ein Verzeichnis ist, dann...
    		$sFolder = $aFileFolder[$iButton] ; das Verzeichnis übernehmen
    	Else ; anderenfalls (Pfad ist eine Datei)
    		$sFolder = StringRegExpReplace($aFileFolder[$iButton], '(.+\\).*', '$1') ; das Verzeichnis aus dem Pfad extrahieren
    	EndIf
    	If StringRight($sFolder, 1) <> '\' Then $sFolder &= '\' ; wenn das Verzeichnis am Ende keinen Backslash aufweist, dann einen hinzufügen
    	ShellExecute($sFolder) ; das Verzeichnis mit dem Explorer öffnen
    EndFunc   ;==>_OpenFolder
    Alles anzeigen

    Dateien

    FileCheck.zip 21,16 kB – 436 Downloads
  • Textcursor positionieren

    • Oscar
    • 7. Oktober 2016 um 18:45

    Die _GUICtrlEdit-Befehle lassen sich auch auf Input-Controls anwenden:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    
    
    GUICreate("Edit Append Text", 400, 300)
    $idEdit = GUICtrlCreateInput("This is a test", 2, 2, 120, 20)
    GUISetState(@SW_SHOW)
    
    
    _GUICtrlEdit_AppendText($idEdit, "")
    
    
    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    Alles anzeigen
  • TreeView zur Auswahl mehrerer Ordner

    • Oscar
    • 7. Oktober 2016 um 18:38

    Für die Rückgabe aller angehakten Einträge hatte ich schonmal Funktionen geschrieben.
    Ich habe es mal ins Script eingebaut. Es wird nun ein Array mit den Pfaden zurückgegeben:

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiTreeView.au3>
    #include <StructureConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    
    
    Opt('MustDeclareVars', 1)
    
    
    Global $hGui = GUICreate('FileExplorer', 600, 600)
    
    
    Global Const $Delim = '\', $Delim1 = '|'
    
    
    Global $hTreeview = GUICtrlCreateTreeView(5, 5, 590, 500, BitOR($TVS_CHECKBOXES, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT))
    Global $hWndTreeview = GUICtrlGetHandle($hTreeview)
    Global $hOk = GUICtrlCreateButton('Ok', 240, 510, 60, 22)
    Global $hCancel = GUICtrlCreateButton('Cancel', 320, 510, 60, 22)
    
    
    Global $hImage = _GUIImageList_Create(16, 16, 5, 1)
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 3) ; Verzeichnis-Icon
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 110) ; Verzeichnis-Icon mit Haken
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 1) ; Datei-Icon
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 5) ; Diskette
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 7) ; Wechseldatenträger
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 8) ; Festplatte
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 11) ; CDROM
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 12) ; Netzwerklaufwerk
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 53) ; Unbekannt
    _GUICtrlTreeView_SetNormalImageList($hTreeview, $hImage)
    
    
    GUISetState()
    GUICtrlSetStyle($hTreeview, Default, BitOR($WS_EX_COMPOSITED, $WS_EX_CLIENTEDGE))
    
    
    If ToolTip('Please wait...', Default, Default, 'Read Directory', 1) Then Local $aDrives = DriveGetDrive('ALL'), $iLWindex, $hRoot
    For $i = 1 To $aDrives[0]
    	$iLWindex = 0
    	Switch DriveGetType($aDrives[$i])
    		Case 'Fixed'
    			$iLWindex = 5
    		Case 'CDROM'
    			$iLWindex = 6
    		Case 'RAMDisk'
    			$iLWindex = 7
    		Case 'Removable'
    			$iLWindex = 4
    			If StringLeft($aDrives[$i], 2) = 'a:' Or StringLeft($aDrives[$i], 2) = 'b:' Then $iLWindex = 3
    		Case Else
    			$iLWindex = 8
    	EndSwitch
    	$hRoot = _GUICtrlTreeView_Add($hTreeview, $hTreeview, StringUpper($aDrives[$i]), $iLWindex, $iLWindex)
    	If DriveStatus($aDrives[$i]) <> 'READY' Then ContinueLoop
    	If _GUICtrlTreeView_BeginUpdate($hTreeview) And _GUICtrlTreeView_FileExplorer($hTreeview, $hRoot, $aDrives[$i]) Then _GUICtrlTreeView_EndUpdate($hTreeview)
    Next
    ToolTip('')
    
    
    GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
    Global $aItems[1], $iCheckedCount = 0
    While True
    	Switch GUIGetMsg()
    		Case $GUI_EVENT_CLOSE, $hCancel
    			Exit
    		Case $hOk
    			Global $aItems[_GUICtrlTreeView_GetCount($hTreeView) - 1]
    			Global $iCheckedCount = 0
    			Global $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
    			_CheckedItemsToArray($hTreeView)
    			Opt('GUIDataSeparatorChar', $oldGUIDataSeparatorChar)
    			_ArrayDisplay($aItems)
    ;~ 			MsgBox(0, 'Selected Path/File', StringReplace(_GUICtrlTreeView_GetTree($hTreeview, _GUICtrlTreeView_GetSelection($hTreeview)), $Delim1, $Delim))
    		Case $hTreeview
    			If _GUICtrlTreeView_GetChecked($hTreeview, _GUICtrlTreeView_GetSelection($hTreeview)) Then
    				MsgBox(0, "", _GUICtrlTreeView_GetSelection($hTreeview) & " wurde gecheckt.")
    			Else
    				MsgBox(0, "", _GUICtrlTreeView_GetSelection($hTreeview) & " wurde ungecheckt.")
    			EndIf
    	EndSwitch
    WEnd
    
    
    Func _CheckedItemsToArray(ByRef $hTreeView)
    	Local $hFirstItem = _GUICtrlTreeView_GetFirstChild($hTreeView, 1)
    	_ReadChildItems($hTreeView, $hFirstItem)
    	If $iCheckedCount = 0 Then Return
    	ReDim $aItems[$iCheckedCount]
    EndFunc   ;==>_CheckedItemsToArray
    
    
    Func _ReadChildItems(ByRef $hTreeView, $hItem)
    	Local $hNewItem
    	Do
    		$hNewItem = _GUICtrlTreeView_GetFirstChild($hTreeView, $hItem)
    		If $hNewItem Then _ReadChildItems($hTreeView, $hNewItem)
    		If _GUICtrlTreeView_GetChecked($hTreeView, $hItem) Then
    			$aItems[$iCheckedCount] = StringReplace(_GUICtrlTreeView_GetTree($hTreeView, $hItem), '\\', '\')
    			$iCheckedCount += 1
    		EndIf
    		$hItem = _GUICtrlTreeView_GetNextChild($hTreeView, $hItem)
    	Until $hItem = 0
    EndFunc   ;==>_ReadChildItems
    
    
    Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    	Local $hChild, $hITEM, $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW, $ilParam)
    	If DllStructGetData($tNMTREEVIEW, 'hWndFrom') = $hWndTreeview Then
    		Switch DllStructGetData($tNMTREEVIEW, 'Code')
    			Case $TVN_ITEMEXPANDINGA, $TVN_ITEMEXPANDINGW
    				Switch DllStructGetData($tNMTREEVIEW, 'Action')
    					Case $TVE_EXPAND
    						If ToolTip('Please wait...', Default, Default, 'Read Directory', 1) Then $hITEM = DllStructGetData($tNMTREEVIEW, 'NewhItem')
    						If _GUICtrlTreeView_GetExpanded($hTreeview, $hITEM) Then Return $GUI_RUNDEFMSG
    						$hChild = _GUICtrlTreeView_GetFirstChild($hTreeview, $hITEM)
    						If Not $hChild Then Return $GUI_RUNDEFMSG
    						If _GUICtrlTreeView_BeginUpdate($hTreeview) Then _GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
    						_GUICtrlTreeView_FileExplorer($hTreeview, $hChild, StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), $Delim1, $Delim))
    						Do
    							$hChild = _GUICtrlTreeView_GetNextChild($hTreeview, $hChild)
    							If Not $hChild Then ExitLoop
    							_GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
    							_GUICtrlTreeView_FileExplorer($hTreeview, $hChild, StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), $Delim1, $Delim))
    						Until False
    						If _GUICtrlTreeView_EndUpdate($hTreeview) Then ToolTip('')
    				EndSwitch
    		EndSwitch
    	EndIf
    	Return $GUI_RUNDEFMSG
    EndFunc   ;==>_WM_NOTIFY
    
    
    Func _GUICtrlTreeView_FileExplorer($hTreeview, $hITEM, $sPath)
    	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')
    	$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 $sFile In $aDirList
    		If StringInStr(FileGetAttrib($sPath & $Delim & $sFile), 'D') Then
    			_GUICtrlTreeView_AddChild($hTreeview, $hITEM, $sFile, 0, 1)
    		Else
    			_GUICtrlTreeView_AddChild($hTreeview, $hITEM, $sFile, 2, 2)
    		EndIf
    	Next
    	Return True
    EndFunc   ;==>_GUICtrlTreeView_FileExplorer
    
    
    Func _IsReparsePoint($FLS) ; progandy
    	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
    Alles anzeigen
  • _GUICtrlTreeView_SetIcon individuell anpassen

    • Oscar
    • 7. Oktober 2016 um 18:11

    Wenn Du mit solchen Beispielen nicht weiter kommst, wäre es wäre hilfreich, wenn Du Dein komplettes Script posten würdest.
    Dann können wir die Änderungen direkt darin vornehmen und müssen nicht immer wieder neue Beispiele basteln (die Du dann nicht verstehst).

  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 7. Oktober 2016 um 18:06
    Zitat von firewalldevil

    ähm, bin nicht sicher wie viel Aufwand das ist und was so idR "gezahlt" wird

    Das haben wir ja schon geklärt. Spende an das Forum reicht!
    Die Änderungswünsche kannst Du mir ja noch mitteilen. Dann baue ich das noch ein.

    In die Runde gefragt: Ist so ein Programm von allgemeinen Interesse? Dann würde ich das auch hier posten.

  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 5. Oktober 2016 um 15:06

    Oh! Entschuldige!
    Ich habe nicht gesehen, dass Du das in Programmieranfragen gepostet hast.
    Du solltest noch dazuschreiben, was Du bezahlen willst und bis wann das fertig sein soll.

    Zitat von firewalldevil

    Ist der Button rot, möchte ich in einen hinterlegen Ordner springen.

    Diese Anforderung solltest Du auch etwas präzisieren.
    Wo ist der Ordner hinterlegt?
    Und für jeden Eintrag der gleiche Ordner? Oder für jeden Eintrag ein extra Ordner?
    Was heißt: "möchte ich in einen Ordner springen"? Soll der Ordner auf dem Desktop (Explorer) geöffnet werden?

  • Datei / Ordnerabfrage mit Icon (Button) anzeigen

    • Oscar
    • 4. Oktober 2016 um 14:54
    Zitat von firewalldevil

    machbar.....???

    Na klar!
    Fang an!

  • Email Attachment extrahieren - per POP3 TXT filtern und in Variable übernehmen

    • Oscar
    • 3. Oktober 2016 um 08:42

    Ich denke, mein Pop-Show ist nicht mehr wirklich geeignet, weil die meisten EMail-Provider auf SSL-Verschlüsselung umgestellt haben.
    Die POP3-UDF von Stilgar beherrscht aber keine SSL-Verschlüsselung.
    Ich hatte mal irgendwo eine POP3-SSL-UDF gefunden, die mit OpenSSL arbeitet. Habe die aber noch nicht getestet.

  • "Login" klicken

    • Oscar
    • 30. September 2016 um 19:51
    Zitat von HansJ54

    vermutlich wegen Java

    Javascript! Nicht Java.
    Und wie Stilgar schon geschrieben hat, so einen Login habe ich auch noch nicht gesehen.
    Da wird irgendwie per Javascript der Login durchgeführt. Vermutlich um ein automatisches einloggen zu verhindern.

  • Dienstplanung

    • Oscar
    • 30. September 2016 um 19:46

    Wow! Das ist jetzt doch mal sehr viel Arbeit!
    Ich hatte mir das bei der Deiner ursprünglichen Liste doch eine Nummer kleiner vorgestellt.
    Um das alles umzusetzen braucht man als Hobby-Programmierer (nebenbei noch ein Vollzeitjob) wohl so ca. ein Jahr.
    Ich werde wohl mal einiges davon austesten und schauen, wie lange das so dauert, aber ich denke, dass das doch etwas zu viel wird.

  • Dienstplanung

    • Oscar
    • 30. September 2016 um 16:31
    Zitat von nwmbd

    da hast du wohl Recht, ich wusste das es auf Arrays hinausläuft, ich habe das noch nicht verstanden.

    Ich finde das als Projekt interessant und würde so ein Programm erstellen (vorausgesetzt, dass das nicht bis "morgen" fertig sein muss).
    Viele der benötigten Funktionen habe ich sowieso schon (für andere Projekte) geschrieben.

    Beschreib mal, was da alles an Daten erfasst werden soll.
    Und ist es nicht sinnvoller gleich einen ganzen Monat im Listview darzustellen (Listview kann ja horizontal scrollen)?
    Willst Du zusätzlich die Wochenstunden wissen?
    Sollen dort nur die Stunden/Tag eingetragen sein oder stehen dort auch andere (nicht numerische) Daten (Krank/Urlaub/etc.) drin?
    Wie groß darf das Fenster sein (X-Y-Auflösung des Monitors)?
    Für wie viele Mitarbeiter soll das ausgelegt sein?

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™