1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • Msgbox

    • BugFix
    • 15. Juni 2012 um 18:01

    Indem du die Hilfe zu MsgBox liest, speziell: Rückgabewerte ;)

  • SciTe Anzeige der letzten Dateien

    • BugFix
    • 15. Juni 2012 um 17:21

    Ähm, Session speichern ist in der "SciTEGlobal.properties" in der propertie: save.session=1 geregelt. Einfach statt "1" eine "0" setzen.

  • SciTe Anzeige der letzten Dateien

    • BugFix
    • 15. Juni 2012 um 17:05

    So wie ich das sehe, werden nicht die zuletzt geöffneten Dateien, sondern die in Tabs offenen Dateien angezeigt. Jedenfalls ist das bei mir (meist) so. Und manchmal ist die Liste plötzlich leer.
    In den properties habe ich dazu bisher keinen passenden Parameter gefunden.

  • Color-Picker in Scite-Kontext-Menü einbinden

    • BugFix
    • 15. Juni 2012 um 16:53
    Zitat von ip_trainer

    Oder steht das etwa doch in der Scite-Hilfe und ich finde es nur nicht?


    Genau so ist es. :D

    Erklärung zum Eintrag
    command.name.number.filepattern
    im Abschnitt "SciTE Dokumentation"

    Zitat

    The command number can be in the range of 0 to 49. Command numbers 0 to 9 are assigned Ctrl+Number shortcuts. Internally these commands use IDs starting from 1100 (IDM_TOOLS) which can be used in user.shortcuts and user.context.menu as:
    user.context.menu=Indent|1100|
    If command.name is empty then no item is added to the Tools menu. This can be used for commands that are only in the context menu or user shortcuts.

  • Color-Picker in Scite-Kontext-Menü einbinden

    • BugFix
    • 15. Juni 2012 um 10:07

    Die Integration in das Kontextmenü funktioniert, wie folgt:

    # 43 Color Chooser
    command.name.43.*=Color Chooser
    command.43.*="$(SciteDefaultHome)\ColorChooser\ColorChooser.exe" $(CurrentSelection)
    command.shortcut.43.*=Ctrl+Alt+C

    Ich finde es lesbarer auch in den properties die Menüeinträge untereinander zu schreiben:
    user.context.menu=||\
    Bookmark an/aus|IDM_BOOKMARK_TOGGLE|\
    Alle Bookmarks löschen|IDM_BOOKMARK_CLEARALL|\
    ||\
    Hier auf/zuklappen|IDM_EXPAND|\
    >> Alles auf/zuklappen|IDM_TOGGLE_FOLDALL|\
    ||\
    Go|303|\
    Compile|301|\
    Stop Executing|304|\
    ||\
    User-Properties öffnen|IDM_OPENUSERPROPERTIES|\
    Global-Poperties öffnen|IDM_OPENGLOBALPROPERTIES|\
    Scite-Config bearbeiten|1114|\
    ||\
    Color Chooser|1143|

    Es wird als Kontext-Befehlsnummer immer die "11" und Befehlsnummer aus der command-Anweisung zusammengesetzt, hier also "11" & "43" = 1143

  • File öffnen, Bytes-Reihenfolge detektiern & x-bytes dahinter 2x 0-bytes einfügen

    • BugFix
    • 14. Juni 2012 um 21:39
    Zitat von Tueftler

    Wie würdet Ihr das ganze angehen?


    Gar nicht!

    Hast du unsere Forenregeln gelesen? Bitte dringend nachholen bzw. nochmals, aber gründlich lesen.
    Das sieht mir so aus, als ob du da an einer fremden Datei rumwurschteln möchtest, in einer Art, die wir nicht tolerieren.

    Wenn nicht - überzeug mich von der Ehrhaftigkeit deines Anliegens.

  • Kopierschutz

    • BugFix
    • 14. Juni 2012 um 21:18
    Zitat von iFreak95

    Hat jemand eine Idee, wie ich mein Programm effektiv vor "Softwarepiraterie" schützen kann?


    1. Gar nicht!
    2. Wenn du was halbwegs sicher haben willst (z.B. weil du mit Software Geld verdienst) bist du mit AutoIt schlecht beraten.
    3. Der m.M. nach beste Weg: GPL

  • Netzlaufwerke verbinden

    • BugFix
    • 14. Juni 2012 um 11:09
    Zitat von Camulus

    Hat einer von euch ne Idee warum das manchmal trotzdem nicht klappt?

    Das gezeigte Skript bereitet sicher keine Probleme. Ursachen würde ich mal in dem (völlig unnötigen) vbs-Skript suchen.

    Zitat von Camulus

    Das Problem ist dass dieses Tool mittlerweile Firmenübergreifend eingesetzt wird und in den anderen Firmen gibt es Mitarbeiter die händisch gemappte Laufwerke haben.
    Kann ich noch irgendwie anders zuverlässig testen ob das funktioniert hat?

    Das spielt doch keine Rolle, ob per Hand oder per Skript gemapt. Ein Netzlaufwerk ist immer mit dem entsprechenden Flag versehen und wird durch die Laufwerksabfrage auch als solches identifiziert.

    Zitat von Camulus

    Tja, das ist nicht gewünscht. Wir haben ein vbs Script das je nach Gruppenzugehörigkeit die Laufwerke mappt. Unud wenns dann in den nächsten 1000 Jahren mal eine Änderung geben sollte müsste man ja nur dieses vbs Script ändern.

    Und wieso soll das Problem Gruppenzugehörigkeit nur mit vbs lösbar sein?
    Meiner Meinung nach schafft ihr euch nur zusätzliche Fehlerquellen, beim Aufruf eines Skriptes durch ein anderes Skriptformat. Sauber alles in einem und der Drops ist gelutscht.

  • .exe zurück in .au3 umwandeln?

    • BugFix
    • 14. Juni 2012 um 10:59

    Wenn es dir darum geht, jederzeit wieder den Sourcecode zur Verfügung zu haben, kannst du diesen doch beim Kompilieren in der EXE speichern ("Resource Update" - Checkbox "Save a copy of the Scriptsource in the output program resources.")
    Dann brauchst du nicht dekompilieren und kannst jederzeit völlig legal deinen Sourcecode einsehen (natürlich auch jeder andere).

  • TreeViewEx.au3 - zusätzliche Treeview Funktionen

    • BugFix
    • 14. Juni 2012 um 10:45
    Zitat von chip

    Machmal Frage ich mich echt wie du auf die ganze Ideen kommst.


    :D
    Ergibt sich meist aus ganz konkreten Projekten. In diesem Fall ist es ein Backupprogramm, das ich für meine Firma schreibe. Bei allen existierenden Lösungen ist meist irgendwas zuviel oder zu wenig - also doch selbst machen. Hier habe ich die Laufwerksauswahl als Treeview und da brauchte ich zwingend eine Radio-Funktionalität um dann nur die Ordner und Dateien dieses Laufwerks zur Auswahl zu stellen.

  • Problem beim Aufruf eines links aus einem in GUI embedded IE-Fenster

    • BugFix
    • 13. Juni 2012 um 13:04

    Könntest du vielleicht ein Bsp. erstellen (mit einer beliebigen Webseite aber inkl. des Druckfehlers)?
    Das ist jetzt für uns nicht reproduzierbar und somit wüßte ich nicht, wo ich ansetzen soll.
    Übrigens: Verwende bitte die Code-Tags (Symbole über dem Edit-Feld im Quellcode-Fenster) zur besseren Code-Darstellung.

    Ich verwende die IE-Funktionen so gut, wie nie. Daher habe ich adhoc auch keine Idee dazu. Vielleicht bietet dir die Beschreibung des InternetExplorer Objektes selbst einen Ansatz.

  • Wie effizient Suchen und ersetzen?

    • BugFix
    • 13. Juni 2012 um 12:50

    Wieviel verschiedene Schlüsselwörter/Ersetzungen gibt es denn?
    Man kann das sicher auch mit StringRegExpReplace erledigen. Das Pattern hängt dann natürlich von den möglichen Schlüsselwörtern und Ersetzungen ab.

  • TreeViewEx.au3 - zusätzliche Treeview Funktionen

    • BugFix
    • 13. Juni 2012 um 12:12

    Hier ein paar zusätzliche Funktionen für Treeviews:

    _GUICtrlTreeView_ExpandOneLevel
    (Hatte ich bereits mal gepostet, jetzt nochmal überarbeitet)
    - Ein/Ausklappen nur eines Levels unterhalb eines Item

    _GUICtrlTreeView_CheckBoxAsRadio
    - Alle Checkboxen in einem Treeview werden wie Radio-Ctrl behandelt
    - Es kann immer nur eine Checkbox aktiv sein. Wird eine andere Checkbox aktiviert, wird automatisch die zuletzt gecheckte deaktiviert.
    - Zeitgleich für verschiedene Treeview im Skript einsetzbar

    _GUICtrlTreeView_CheckBoxAsRadioInLevel
    - Checkboxen eines Levels in einem Treeview werden wie Radio-Ctrl behandelt
    - Es kann immer nur eine Checkbox eines Item-Levels aktiv sein. Wird eine andere Checkbox aktiviert, wird automatisch die zuletzt gecheckte deaktiviert.
    - Zeitgleich für verschiedene Treeview im Skript einsetzbar

    _GUICtrlTreeView_GetCheckedInSelectionLevel
    - Ermittelt alle Item-Handle mit aktivierter Checkbox im Level des aktuell selektierten Item
    - Optional kann zu den Item-Handle auch gleich der Text ermittelt werden.

    Die Funktionen zum Verwenden der Checkboxen als Radio müssen jeweils aufgerufen werden, wenn eine Aktion stattfindet, die eine Checkbox De/aktivieren könnte. Also bei Mausklick und Leertaste. Im Bsp. habe ich das auf den Mausklick beschränkt.
    Vereinzelt kann es Auftreten, dass bei schnellem Klicken hintereinander das De/aktivieren fehlschlägt. Mal sehen, ob sich das noch zu 100 % ausschließen läßt.

    Noch etwas zu den Radiofunktionen:
    Gerade umfangreiche Installationen oder Einstellungsoberflächen lassen sich damit wesentlich vereinfachen. Ein Treeview ist effektiver im Platzverbrauch als die Verwendung von Groups, Radios und Checkboxen auf einer GUI und bei vielen Elementen auch übersichtlicher.

    TreeViewEx.au3 (v0.1)
    [autoit]

    #Region - TimeStamp
    ; 2012-06-13 11:35:34 v 0.1
    #EndRegion - TimeStamp
    #include-once
    #Include <GuiTreeView.au3>

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

    Global Const $__MAX_COUNT_TREEVIEWCTRL = 100

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

    ;===============================================================================
    ; Function Name....: _GUICtrlTreeView_CheckBoxAsRadio
    ; Description......: Checkboxen in einem Treeview werden wie Radio-Ctrl behandelt
    ; .................: Es kann immer nur eine Checkbox aktiv sein. Wird eine andere Checkbox aktiviert,
    ; .................: wird automatisch die zuletzt gecheckte deaktiviert.
    ; .................: Zeitgleich für verschiedene Treeview im Skript einsetzbar
    ; Parameter(s).....: $_hWnd Das Handle des Treeviews
    ; .................: $_fFocus Wenn TRUE (Standard) wird Funktion nur ausgeführt bei Fokus auf dem Treeview
    ; Requirement(s)...: Treeview mit Style: $TVS_CHECKBOXES
    ; Return Value(s)..: Erfolg Handle des momentan selektierten Item (unabhängig ob gecheckt oder nicht)
    ; .................: Fehler 0 @error=1 Treeview hat nicht den Fokus
    ; Note.............: Die Funktion sollte sinnvollerweise immer initialisiert werden, wenn ein Event stattfindet,
    ; .................: das ein de/aktivieren der Checkboxen zur Folge haben könnte (Mausklick oder Leertaste)
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GUICtrlTreeView_CheckBoxAsRadio($_hWnd, $_fFocus=True)
    If Not IsHWnd($_hWnd) Then $_hWnd = GUICtrlGetHandle($_hWnd)
    If $_fFocus Then
    Local $hCtrl = DllCall("user32.dll", "hwnd", "GetFocus")
    If $hCtrl[0] <> $_hWnd Then Return SetError(1,0,0)
    EndIf
    Local Static $a_hWnd[$__MAX_COUNT_TREEVIEWCTRL][2] = [[0]] ; == [[hWnd,hLastCheck]]
    Local $index_hWnd = 0, $hLastCheck = 0, $fFound = False
    If $a_hWnd[0][0] = 0 Then ; == erstmaliger Aufruf der Funktion
    $a_hWnd[0][0] = $_hWnd
    Else ; == weitere Aufrufe
    For $i = 0 To $__MAX_COUNT_TREEVIEWCTRL -1
    If $a_hWnd[$i][0] = $_hWnd Then ; == für dieses Treeview erfolgte bereits ein Aufruf
    $index_hWnd = $i
    $hLastCheck = $a_hWnd[$i][1]
    $fFound = True
    ExitLoop
    ElseIf $a_hWnd[$i][0] = '' Then
    ExitLoop
    EndIf
    Next
    If Not $fFound Then ; == für dieses Treeview erstmaliger Aufruf
    $index_hWnd = $i
    $a_hWnd[$index_hWnd][0] = $_hWnd
    EndIf
    EndIf
    Local $aCheck = _GUICtrlTreeView_GetCheckedInSelectionLevel($_hWnd)
    If $aCheck[0] = $hLastCheck Then ; == selektiertes Item war gecheckt
    $a_hWnd[$index_hWnd][1] = 0
    Else
    _GUICtrlTreeView_SetChecked($_hWnd, $hLastCheck, False)
    _GUICtrlTreeView_SetChecked($_hWnd, $aCheck[0], True)
    $a_hWnd[$index_hWnd][1] = $aCheck[0]
    EndIf
    Return $aCheck[0]
    EndFunc ;==>_GUICtrlTreeView_CheckBoxAsRadio

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

    ;===============================================================================
    ; Function Name....: _GUICtrlTreeView_CheckBoxAsRadioInLevel
    ; Description......: Checkboxen eines Levels in einem Treeview werden wie Radio-Ctrl behandelt
    ; .................: Es kann immer nur eine Checkbox eines Item-Levels aktiv sein. Wird eine andere Checkbox aktiviert,
    ; .................: wird automatisch die zuletzt gecheckte deaktiviert.
    ; .................: Zeitgleich für verschiedene Treeview im Skript einsetzbar
    ; Parameter(s).....: $_hWnd Das Handle des Treeviews
    ; .................: $_hLevelOnly Erstes Handle des Levels, für dessen Siblings ausschließlich die Funktion wirksam wird
    ; .................: $_fFocus Wenn TRUE (Standard) wird Funktion nur ausgeführt bei Fokus auf dem Treeview
    ; Requirement(s)...: Treeview mit Style: $TVS_CHECKBOXES
    ; Return Value(s)..: Erfolg Handle des momentan selektierten Item (unabhängig ob gecheckt oder nicht)
    ; .................: Fehler 0 @error=1 Treeview hat nicht den Fokus
    ; Note.............: Die Funktion sollte sinnvollerweise immer initialisiert werden, wenn ein Event stattfindet,
    ; .................: das ein De/aktivieren der Checkboxen zur Folge haben könnte (Mausklick oder Leertaste)
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GUICtrlTreeView_CheckBoxAsRadioInLevel($_hWnd, $_hLevelOnly=-1, $_fFocus=True)
    If Not IsHWnd($_hWnd) Then $_hWnd = GUICtrlGetHandle($_hWnd)
    If $_fFocus Then
    Local $hCtrl = DllCall("user32.dll", "hwnd", "GetFocus")
    If $hCtrl[0] <> $_hWnd Then Return SetError(1,0,0)
    EndIf
    Local Static $a_hWnd[$__MAX_COUNT_TREEVIEWCTRL][3] = [[0]] ; == [[hWnd,hParent,hLastCheck]]
    Local $index_hWnd = 0, $hLastCheck = -1, $fFound = False, $hSel, $hParent, $hFirst, $aLvlOnly[1]
    $hSel = _GUICtrlTreeView_GetSelection($_hWnd)
    $hParent = _GUICtrlTreeView_GetParentHandle($_hWnd, $hSel)
    If Not $hParent Then
    $hParent = 'root'
    $hFirst = _GUICtrlTreeView_GetFirstItem($_hWnd)
    Else
    $hFirst = _GUICtrlTreeView_GetFirstChild($_hWnd, $hParent)
    EndIf
    If $_hLevelOnly <> -1 Then
    If Not IsArray($_hLevelOnly) Then
    $aLvlOnly[0] = $_hLevelOnly
    Else
    $aLvlOnly = $_hLevelOnly
    EndIf
    For $i = 0 To UBound($aLvlOnly) -1
    If $aLvlOnly[$i] = $hFirst Then Return
    Next
    EndIf
    If $a_hWnd[0][0] = 0 Then ; == erstmaliger Aufruf der Funktion
    $a_hWnd[0][0] = $_hWnd ; == TV-Handle
    $a_hWnd[0][1] = $hParent ; == Parent-Handle ('root' bei Root)
    Else ; == weitere Aufrufe
    For $i = 0 To $__MAX_COUNT_TREEVIEWCTRL -1
    If ($a_hWnd[$i][0] = $_hWnd And $a_hWnd[$i][1] = $hParent) Then ; == für dieses Treeview erfolgte bereits ein Aufruf
    $index_hWnd = $i
    $hLastCheck = $a_hWnd[$i][2]
    $fFound = True
    ExitLoop
    ElseIf $a_hWnd[$i][0] = '' Then
    ExitLoop
    EndIf
    Next
    If Not $fFound Then ; == für dieses Treeview erstmaliger Aufruf
    $index_hWnd = $i
    $a_hWnd[$index_hWnd][0] = $_hWnd
    $a_hWnd[$index_hWnd][1] = $hParent
    EndIf
    EndIf
    Local $aCheck = _GUICtrlTreeView_GetCheckedInSelectionLevel($_hWnd)
    If $aCheck[0] = $hLastCheck Then ; == selektiertes Item war gecheckt
    $a_hWnd[$index_hWnd][2] = 0
    Else
    _GUICtrlTreeView_SetChecked($_hWnd, $hLastCheck, False)
    _GUICtrlTreeView_SetChecked($_hWnd, $aCheck[0], True)
    $a_hWnd[$index_hWnd][2] = $aCheck[0]
    EndIf
    Return $aCheck[0]
    EndFunc ;==>_GUICtrlTreeView_CheckBoxAsRadioInLevel

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

    ;===============================================================================
    ; Function Name....: _GUICtrlTreeView_GetCheckedInSelectionLevel
    ; Description......: Ermittelt alle Item-Handle mit aktivierter Checkbox im Level des aktuell selektierten Item
    ; .................: Optional kann zu den Item-Handle auch gleich der Text ermittelt werden.
    ; Parameter(s).....: $_hWnd Das Handle des Treeviews
    ; ........optional.: $_fText FALSE (Standard) - nur Rückgabe der Handle; mit TRUE wird Array als 2D mit [[hWnd-Item, Text-Item]] zurückgegeben
    ; Requirement(s)...: Treeview mit Style: $TVS_CHECKBOXES
    ; Return Value(s)..: Array Pos[0] - Handle des aktuell selektierten Item (auch wenn Checkbox inaktiv!)
    ; .................: Pos[n..ff] - Handle aller Item mit aktiver Checkbox (also auch das aktuell selektierte nochmals, wenn gecheckt)
    ; .................: opt. 2D-Array mit Text des Item an [n][1]
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GUICtrlTreeView_GetCheckedInSelectionLevel($_hWnd, $_fText=False)
    If Not IsHWnd($_hWnd) Then $_hWnd = GUICtrlGetHandle($_hWnd)
    Local $hSel = _GUICtrlTreeView_GetSelection($_hWnd)
    Local $aRet[1] = [$hSel], $hFirst, $hNext, $hParent
    If $_fText Then
    ReDim $aRet[1][2]
    $aRet[0][0] = $hSel
    $aRet[0][1] = _GUICtrlTreeView_GetText($_hWnd, $hSel)
    EndIf
    ; == erstes Item dieses Levels suchen
    $hParent = _GUICtrlTreeView_GetParentHandle($_hWnd, $hSel)
    If $hParent Then
    $hFirst = _GUICtrlTreeView_GetFirstChild($_hWnd, $hParent)
    Else
    $hFirst = _GUICtrlTreeView_GetFirstItem($_hWnd)
    EndIf
    ; == erstes Item auf gecheckt prüfen
    If _GUICtrlTreeView_GetChecked($_hWnd, $hFirst) Then
    If $_fText Then
    ReDim $aRet[UBound($aRet)+1][2]
    $aRet[UBound($aRet)-1][0] = $hFirst
    $aRet[UBound($aRet)-1][1] = _GUICtrlTreeView_GetText($_hWnd, $hFirst)
    Else
    ReDim $aRet[UBound($aRet)+1]
    $aRet[UBound($aRet)-1] = $hFirst
    EndIf
    EndIf
    ; == restliche Item des Levels auf gecheckt prüfen
    $hNext = $hFirst
    While True
    $hNext = _GUICtrlTreeView_GetNextSibling($_hWnd, $hNext)
    If Not $hNext Then ExitLoop
    If _GUICtrlTreeView_GetChecked($_hWnd, $hNext) Then
    If $_fText Then
    ReDim $aRet[UBound($aRet)+1][2]
    $aRet[UBound($aRet)-1][0] = $hNext
    $aRet[UBound($aRet)-1][1] = _GUICtrlTreeView_GetText($_hWnd, $hNext)
    Else
    ReDim $aRet[UBound($aRet)+1]
    $aRet[UBound($aRet)-1] = $hNext
    EndIf
    EndIf
    WEnd
    Return $aRet
    EndFunc ;==>_GUICtrlTreeView_GetCheckedInSelectionLevel

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

    ;==================================================================================================
    ; Function Name: _GUICtrlTreeView_ExpandOneLevel
    ; Description..: Aus/Einklappen nur EINER Ebene eines Items, analog zum Mausklick auf '+/-'
    ; Parameter(s).: $_hWnd Handle des TreeView
    ; .............: $_hParent Handle des Item, dessen Childs aus/einzuklappen sind
    ; .............: Standard 0 ==> Handle des ersten Item im TreeView
    ; .............: $_fExpand Standard TRUE ==> Ausklappen, Einklappen mit FALSE
    ; Return.......: Erfolg Handle des Item, dessen Childs aus/eingeklappt wurden
    ; .............: Fehler 0 @error 1 - TreeView enthält kein Item
    ; .............: @error 2 - Item hat keine Child-Item
    ; Note.........: Die Funktion sollte zwischen _GUICtrlTreeView_BeginUpdate() und _GUICtrlTreeView_EndUpdate()
    ; .............: ausgeführt werden um ein Flackern zu verhindern
    ; Author(s)....: BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GUICtrlTreeView_ExpandOneLevel($_hWnd, $_hParent=0, $_fExpand=True)
    If Not IsHWnd($_hWnd) Then $_hWnd = GUICtrlGetHandle($_hWnd)
    If $_hParent = 0 Then $_hParent = _GUICtrlTreeView_GetFirstItem($_hWnd)
    If $_hParent = 0 Then Return SetError(1,0,0)
    Local $hChild, $countChild = _GUICtrlTreeView_GetChildCount($_hWnd, $_hParent)
    If $countChild = 0 Then Return SetError(2,0,0)
    _GUICtrlTreeView_Expand($_hWnd, $_hParent, $_fExpand)
    If Not $_fExpand Then Return $_hParent
    For $i = 1 To $countChild
    If $i = 1 Then
    $hChild = _GUICtrlTreeView_GetFirstChild($_hWnd, $_hParent)
    Else
    $hChild = _GUICtrlTreeView_GetNextSibling($_hWnd, $hChild)
    EndIf
    If _GUICtrlTreeView_GetChildren($_hWnd, $hChild) Then _GUICtrlTreeView_Expand($_hWnd, $hChild, False)
    Next
    Return $_hParent
    EndFunc ;==>_GUICtrlTreeView_ExpandOneLevel

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

    #Region - TimeStamp
    ; 2012-06-13 11:54:52
    #EndRegion - TimeStamp
    #include <Array.au3>
    #Include <GUIConstantsEx.au3>
    #Include <WindowsConstants.au3>
    #include 'TreeViewEx.au3'
    Opt('MustDeclareVars', 1)

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

    _Main_1()
    _Main_2()
    Exit

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

    Func _Main_1()
    Local $aChecked, $aNormalCheck[2], $hGui, $nTV1, $nTV2, $nTV3, $hItem

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

    $hGui = GUICreate('Treeview - Alle Checkbox als Radio', 885, 430)
    $nTV1 = GUICtrlCreateTreeView(15, 15, 275, 370, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
    GUICtrlCreateLabel('In Root und Childs von SubItem_1_2 normal, andere SubLevel als Radio', 15, 395, 275, 24)
    $nTV2 = GUICtrlCreateTreeView(305, 15, 275, 370, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
    GUICtrlCreateLabel('Checkboxen im Root und SubLeveln als Radio, je Level nur eine Checkbox aktivierbar', 305, 395, 275, 24)
    $nTV3 = GUICtrlCreateTreeView(595, 15, 275, 370, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
    GUICtrlCreateLabel('Checkboxen im ges. Treeview als eine Radio-Group, nur eine einzige Checkbox aktivierbar', 595, 395, 275, 24)

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

    _AddItem($nTV1, 3, 1)
    _AddItem($nTV2)
    _AddItem($nTV3)

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

    $hItem = _GUICtrlTreeView_ExpandOneLevel($nTV1) ; == erstes Root-Item ein Level ausklappen
    ; == 2.tes Child von erstem Root-Item und dessen 1.tes Child ein Level ausklappen
    _GUICtrlTreeView_Expand($nTV1, _GUICtrlTreeView_GetItemByIndex($nTV1, _GUICtrlTreeView_ExpandOneLevel($nTV1, _GUICtrlTreeView_GetItemByIndex($nTV1, $hItem, 1)), 0))
    For $i = 1 To 2 ; == restliche Root-Item ein Level ausklappen
    $hItem = _GUICtrlTreeView_GetNextSibling($nTV1, $hItem)
    _GUICtrlTreeView_ExpandOneLevel($nTV1, $hItem)
    Next

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

    ; == alle Item der anderen Treeview ausklappen
    _GUICtrlTreeView_Expand($nTV2)
    _GUICtrlTreeView_Expand($nTV3)

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

    GUISetState()

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

    While True
    Switch GUIGetMsg()
    Case -3
    ExitLoop
    Case $GUI_EVENT_PRIMARYUP
    $aNormalCheck[0] = _GUICtrlTreeView_GetFirstItem($nTV1) ; == Root
    $aNormalCheck[1] = _GUICtrlTreeView_GetItemByIndex($nTV1, _GUICtrlTreeView_GetItemByIndex($nTV1, $aNormalCheck[0], 1), 0) ; == unterhalb SubItem_1_2
    _GUICtrlTreeView_CheckBoxAsRadioInLevel($nTV1, $aNormalCheck) ; == Root u. Childs von SubItem_1_2 Mehrfachauswahl, andere Sublevel als Radio
    _GUICtrlTreeView_CheckBoxAsRadioInLevel($nTV2) ; == alle Siblings eines Parent im selben Level als Radio-Gruppe
    _GUICtrlTreeView_CheckBoxAsRadio($nTV3) ; == alle Item als eine Radio-Gruppe
    EndSwitch
    WEnd

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

    GUIDelete($hGui)
    EndFunc

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

    Func _Main_2()
    Local $aChecked, $hGui, $nTV1, $bt_GetChecked

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

    $hGui = GUICreate('Checkbox im Selektions-Level', 310, 470)
    GUICtrlCreateLabel('Item mit aktiv. Checkbox im Selektions-Level ermitteln', 15, 15, 275)
    $nTV1 = GUICtrlCreateTreeView(15, 35, 275, 370, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
    $bt_GetChecked = GUICtrlCreateButton('Get Checked Item', 15, 415, 100, 22)
    GUICtrlCreateLabel('An Pos[0] im Rückgabe-Array ist das selektierte Item', 15, 445, 275)

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

    _AddItem($nTV1, 5, 0, True)
    _GUICtrlTreeView_Expand($nTV1)

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

    GUISetState()

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

    While True
    Switch GUIGetMsg()
    Case -3
    ExitLoop
    Case $bt_GetChecked
    $aChecked = _GUICtrlTreeView_GetCheckedInSelectionLevel($nTV1, True)
    _ArrayDisplay($aChecked)
    EndSwitch
    WEnd

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

    GUIDelete($hGui)
    EndFunc

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

    Func _AddItem($_hWnd, $_iLvl=5, $_fSub=0, $_fCheck=False)
    If Not IsHWnd($_hWnd) Then $_hWnd = GUICtrlGetHandle($_hWnd)
    Local $hItem, $hSubItem, $hTmp, $hTmpSub
    For $i = 1 To $_iLvl
    $hItem = _GUICtrlTreeView_Add($_hWnd, $_hWnd, 'Item_' & $i)
    If $_fCheck Then _GUICtrlTreeView_SetChecked($_hWnd, $hItem, Random(0,1,1))
    For $j = 1 To 3
    $hSubItem = _GUICtrlTreeView_AddChild($_hWnd, $hItem, 'SubItem_' & $i & '_' & $j)
    If $_fCheck Then _GUICtrlTreeView_SetChecked($_hWnd, $hSubItem, Random(0,1,1))
    If $_fSub Then
    For $n = 1 To 3
    $hTmp = _GUICtrlTreeView_AddChild($_hWnd, $hSubItem, 'SubItem_' & $i & '_' & $j & '_' & $n)
    If $_fCheck Then _GUICtrlTreeView_SetChecked($_hWnd, $hTmp, Random(0,1,1))
    For $m = 1 To 2
    $hTmpSub = _GUICtrlTreeView_AddChild($_hWnd, $hTmp, 'SubItem_' & $i & '_' & $j & '_' & $n & '_' & $m)
    If $_fCheck Then _GUICtrlTreeView_SetChecked($_hWnd, $hTmpSub, Random(0,1,1))
    Next
    Next
    EndIf
    Next
    Next
    EndFunc

    [/autoit]

    Dateien

    TV_CheckBox_Bsp.au3 4,81 kB – 414 Downloads TreeViewEx[0.1].au3 11,23 kB – 404 Downloads
  • _FileListToArrayEx - Umlaute -.-

    • BugFix
    • 11. Juni 2012 um 10:31

    Wenn du eine rekursive Auflistung möchtest, ist _FileListToArray die völlig falsche Funktion.
    Hier im Forum findest du etliche Lösungen zur rekursiven Auflistung. Verwende mal die Suche (oder schau in meine Signatur).

  • _FileListToArrayEx - Umlaute -.-

    • BugFix
    • 10. Juni 2012 um 23:05
    Zitat von Gipsy

    Die erweiterte Funktion von bernd670 funktioniert echt super. Problem ist nur, dass die Funktion mir nur noch die Dateiname zurückgibt. Schön wäre es, wenn die Funktion den kompletten Pfad zurückgeben kann.


    Das ist ja der Sinn der Funktion. Den Pfad hast du doch bereits übergeben - brauchst ihn also nur mit den Dateinamen verknüpfen.

  • _GUICtrlListView_DeleteAllItems Parameter falsch erklärt

    • BugFix
    • 10. Juni 2012 um 19:26

    Tweaky
    Ich denke das spielt keine Rolle, da die UDF (wie etliche andere auch) sowieso einige Bugs hat an deren Behebung niemand Interesse zeigt (auf BugReports reagiert man ja eh nicht).
    Mag sein, dass ausgerechnet diese Funktion nur mit ID funktioniert, für den Rest brauchst du aber das Handle, also lass es, wie es ist würde ich sagen.

  • Taskleistenhöhe herausfinden

    • BugFix
    • 10. Juni 2012 um 15:41

    Bei Win7:

    [autoit]

    $classWnd = '[CLASS:Shell_TrayWnd]'
    $classTaskBar = '[CLASS:MSTaskListWClass; INSTANCE:1]'
    $aPos = ControlGetPos($classWnd, '', $classTaskBar)
    If IsArray($aPos) Then _ArrayDisplay($aPos)

    [/autoit]

    Eventuell sind die Classnames in anderen Windows-Versionen unterschiedlich, AutoIt-Window-Info verwenden.

  • Netzwerkressourcen auflisten

    • BugFix
    • 10. Juni 2012 um 15:34

    Hi,
    ich habe folgendes Skript verwendet, um die im Netzwerk vorhandenen PC zu ermitteln (bzw. den Pfad zu den Festplatten, auf denen die Netzwerkfreigaben zu finden sind, z.B. "\\PC_Name\BugFix").
    Das Skript gefiel mir zwar nicht sonderlich, da es grauenhaft langsam war (wenn verbunden ca. 10 s, sonst >20 s), aber es tat, was es sollte.
    Heute jedoch flutscht es durch und zeigt mir keine Ergebnisse mehr, obwohl sich an meinem Netz (Arbeitsgruppe) von gestern auf heute nichts geändert hat.

    Bringt es bei euch Ergebnisse oder hat jemand vielleicht eine andere Möglichkeit die im LAN vorhandenen PC aufzulisten (jede mgl. IP per Ping zu testen dauert erst recht viel zu lang).

    Spoiler anzeigen
    [autoit]

    Local $wbemFlagReturnImmediately = 0x10
    Local $wbemFlagForwardOnly = 0x20
    Local $colItems = "", $aRemoteDisk[1][3]
    Local $strComputer = "localhost"
    Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkConnection", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) then
    For $objItem In $colItems
    If $objItem.ResourceType <> 'Disk' Then ContinueLoop
    If $aRemoteDisk[UBound($aRemoteDisk)-1][0] <> '' Then ReDim $aRemoteDisk[UBound($aRemoteDisk)+1][3]
    $aRemoteDisk[UBound($aRemoteDisk)-1][0] = $objItem.RemoteName
    $aRemoteDisk[UBound($aRemoteDisk)-1][1] = $objItem.RemotePath
    $aRemoteDisk[UBound($aRemoteDisk)-1][2] = 1 ; == verbunden
    If Not FileExists($objItem.RemotePath) Then $aRemoteDisk[$aRemoteDisk[0][0]][2] = 0 ; == nicht verbunden
    Next
    Endif

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

    _ArrayDisplay($aRemoteDisk, 'Remote Disk', -1, 0, '', '|', 'Name|Pfad|Verbunden')

    [/autoit]
  • TabItems anzeigen/verstecken

    • BugFix
    • 8. Juni 2012 um 19:05

    Wenn du es sperrst, hast du doch denselben Effekt - der Nutzer kann nicht zugreifen. Ob man das Item sieht oder nicht sollte doch nicht so relevant sein.

  • TabItems anzeigen/verstecken

    • BugFix
    • 8. Juni 2012 um 18:20

    Vor ein paar Tagen hatten wir genau dieselbe Frage schon mal. Bitte die Suche benutzen.

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™