[Beispiel] Icons von System-DLLs in LV darstellen

  • Hallo Com,

    hier ein kleines Skript um sich DLLs in einer Listview darstellen zu lassen:

    Spoiler anzeigen
    [autoit]

    #cs ------------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: AutoBert: http://www.autoit.de/index.php?page…7402#post187402

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

    Skriptbeispiel für den Umgang mit GUICtrlCreateListView, _GUICtrlListView_AddColumn, _GUICtrlListView_AddItem,
    _GUICtrlListView_AddSubItem, _GUICtrlListView_SetImageList, _GUIImageList_AddIcon, _GUIImageList_GetImageCount
    #ce -------------------------------------------------------------------------------------------------------------------------
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

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

    #cs
    compstui.dll|7 Licht aus|8 Licht ein|83 Telefon|95 Fax
    cryptui.dll|
    dot3ui.dll|1 Info
    filemgmt.dll|1 Hinweis
    msrating.dll.dll|10 OK(rund)11 abbrechen(rund)
    mmcndmgr.dll|9 abbrechen|14 Uhr|44 Lupe
    #ce
    Opt('MustDeclareVars', 1)

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

    Global $hGui, $listview, $hListview, $hImage, $b, $iCount,$iWidth = @DesktopWidth, $iHeight = @DesktopHeight -80
    Global $Combo, $Progress, $Label,$aFile, $sDLLName, $Msg, $sTitel = "Icon-Übersicht "
    Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
    $hGui = GUICreate($sTitel & $sDLLName, $iWidth, $iHeight, 0, 0)
    $Combo = GUICtrlCreateCombo("", 2, 2, 120)
    $Progress = GUICtrlCreateProgress(125, 2, $iWidth -137,25)
    ;$Label = GUICtrlCreateLabel("TEST",330,2,200)
    $aFile = _FileListToArray(@SystemDir, "*.DLL")

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

    $listview = GUICtrlCreateListView("", 2, 42, $iWidth-4, $iHeight - 44, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    $hListview = ControlGetHandle($hGui, "", $listview)
    _GUICtrlListView_SetExtendedListViewStyle($listview, $exStyles)
    For $i = 1 To 8
    ; Fügt die Spalten hinzu
    _GUICtrlListView_AddColumn($listview, "Spalte " & $i, 120)
    Next
    GUISetState()
    For $i = 1 To $aFile[0]
    If _LoadIcons($aFile[$i]) > 0 Then GUICtrlSetData($Combo, $aFile[$i])
    GUICtrlSetData($Progress, 100- ($i / $aFile[0] * 100))
    ;GUICtrlSetData($Label,$i & " / " & $aFile[0])
    Next
    GUICtrlSetData($Combo, "shell32.dll", "shell32.dll")
    _showIcons("shell32.dll")

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

    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Combo
    $sDLLName = GUICtrlRead($Combo)
    _showIcons($sDLLName)
    EndSwitch
    WEnd

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

    Func _showIcons($sDLLName)
    Local $iSpalten, $iZeilen, $iBilder
    _GUICtrlListView_DeleteAllItems($hListview)
    $iCount = _LoadIcons($sDLLName)
    WinSetTitle($hGui,"",$sTitel & $sDLLName)
    ;ConsoleWrite($sDLLName & " " & $iCount & @CRLF)
    _GUICtrlListView_SetImageList($listview, $hImage, 1)

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

    $iBilder = -1
    For $iZeilen = 1 To Int(($iCount - 1) / 8) + 1
    $iBilder += 1
    ; Fügt die Items hinzu
    _GUICtrlListView_AddItem($listview, "Bild: " & $iBilder, $iBilder)
    For $iSpalten = 1 To 7
    $iBilder += 1
    ; fügt die SubItems hinzu
    _GUICtrlListView_AddSubItem($listview, $iZeilen - 1, "Bild: " & $iBilder, $iSpalten, $iBilder)
    Next
    Next
    EndFunc ;==>_showIcons

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

    Func _LoadIcons($sDLLName)
    Local $iCount, $iBilder, $iError
    Static $iGesamt
    _GUIImageList_Destroy($hImage)

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

    ; Lädt die Bilder
    $hImage = _GUIImageList_Create(32, 32, 5, 3, 128, 256)
    _GUIImageList_AddIcon($hImage, @SystemDir & "\" & $sDLLName, 0,True)
    $iBilder = 1
    Do
    $iError = _GUIImageList_AddIcon($hImage, @SystemDir & "\" & $sDLLName, $iBilder,True)
    $iBilder += 1
    Until $iError <= 0
    $iCount = _GUIImageList_GetImageCount($hImage)
    $iGesamt += $iCount
    if $iCount <> 0 Then ConsoleWrite($sDLLName & " " & $iCount & " " & $iGesamt & @CRLF)
    Return $iCount
    EndFunc ;==>_LoadIcons

    [/autoit]

    Es ist entstanden, weil ich weiss dass sich in den System-Dlls sehr viele (vielleicht auch für eigene Zwecke brauchbare?) Icons befinden. Ich suche nämlich Icons für die Datennavigation für DB-Programm. Ich habe noch nicht alle DLL's gesichtet und vielleicht deshalb auch noch nicht die gewsünschten Icons gefunden. Gesucht werden Icons die folgenden Symbolen bzw. Begriffen entsprechen "|< ", "<", ">", ">|", "+", "-", "bearbeiten", "neu", "speichern", "verwerfen". Vielleicht findert ihr ja welche für eure Zwecke, wenn ihr dabei zufällig auf die von mir gesuchten stosst bitte posten.

    Edit: und hier noch ein ScreenShot:

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Viel Spass beim sichten der Icons wünscht autoBert

  • schau dir mal das set crystal project von everaldo.com oder so an, die musst du hald umwandeln

    Schönes Programm

  • MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...