Italia
Foro

Brauche Aiuto bei Treeview Control

 
Hallo Profaner...

Habe leider keinen blassen Schimmer von Treeviews und brauche mal dringend Aiuto:
Es geht um ein Treeview mit einer variablen Anzahl von Einträgen (sehr viele Einträge evtl.).
Ich muß nun wissen:
- Den Text des Eintrags, der im Augenblick markiert ist.
- Wie viele Einträge unter diesem Eintrag stehen.
- Die Texte aller jeweils übergeordneten Einträge.
- Ob die untergeordneten Einträge im Augenblick sichtbar (aufgeklappt) sind, oder nicht.

Kann mir da jemand weiterhelfen?
 
02.06.2005  
 



... ich möchte quasi die gesammte Registry in einem Treeview darstellen und daraus einen Eintrag auswählen können...
Hat jemand schon mal so etwas gemacht? Ideen??
 
02.06.2005  
 




Frank
Abbing
Hi,

ich hab eine Treeview.dll gemacht. Damit sollte das einfach zu machen sein, immerhin sind Registry-Einträge auch nur Pfade. In Kürze erfolgt mein Listview.dll-Update bei der es die Treeview.dll als kostenloses Addon gibt. Wenn du nicht warten kannst, schicke ich sie dir auch.
Willst du es ohne Dll machen und auch nicht die Profanfunktion nehmen, dann viel Spass.....
 
02.06.2005  
 



Hallo Frank...

Hab schon auf dich gehofft. Wäre Klasse, wenn das mit deiner DLL gehen würde! Hast du noch mal die Downloadadresse?
 
02.06.2005  
 



Ist die DLL Freeware?
 
02.06.2005  
 




Frank
Abbing
Hi,

die Dll ist leider nur Freeware, wenn du die Listview.dll schon registriert hast. Ist aber komplett testbar, wenn dich das Hinweisfenster nicht stört. Ich schick dir die Dll.
 
02.06.2005  
 



BESTEN Dank...

Bin gespannt, wie weit ich damit komme.
 
02.06.2005  
 



Wenn man erst einmal die Messages kennt sieht auch das Selbsterstellen nicht mehr so schwierig aus. Nach TVM_GETITEM habe ich gesucht.
 
03.06.2005  
 




Frank
Abbing
Hi,

ja, es gibt einige nette Messages, die man gut gebrauchen kann. Man muss sich aber einarbeiten und einige Messages scheinen mir nicht hundert prozentig wie beschrieben zu funktionieren.

Willst du sowas machen wie den Registrierungs-Editor regedit?
Wo finde ich die Registyeinträge noch mal im System?
 
03.06.2005  
 



[quote:16ab0c36a7=Frank Abbing]
Willst du sowas machen wie den Registrierungs-Editor regedit?
[/quote:16ab0c36a7]
Ja, in der Art. Nur will ich keine Einträge, sondern Zugriffsrechte editieren.

[quote:16ab0c36a7=Frank Abbing]
Wo finde ich die Registyeinträge noch mal im System?
[/quote:16ab0c36a7]
Wenn ich genau wissen würde was du damit meinst, würde ich dir das gerne verraten - vorausgesetzt ich wüßte die Antwort darauf...
Vergiß nicht - ich bin absolut kein Experte.
 
03.06.2005  
 




Jörg
Sellmeyer
Die Registry wird zumindest unter Win95 - 98 in System.dat und user.dat im Windowsverzeichnis gespeichert.
Sinnvoll potrebbe aber eher das auslesen mittels Api sein und nicht der direkte Zugriff auf die File.
Uwe Pascal Niemeyer hat glaube ich ein par schöne Vorlagen dazu, wie man ganze Registry-Zweige in einem Rutsch auslesen kann.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
03.06.2005  
 



Wenns nur darum geht - ich denke mal darum gehts aber nicht...
Um Jörg mal zu ergänzen:
Die Registry besteht aus einzelnen Hives, die bei Bedarf hinzugeladen werden. Unter NT steht zum Beispiel der Registryabschnitt jedes einzelnen Users in den NTUSER.DAT File im Profilverzeichnis des betreffenden Users.
Einen richtigen Pfad per die Registry gibt es also eigentlich gar nicht.
Hier mal meine Anfänge zu dem Thema - ist, wie gesagt, mein erstes Treeview:
KompilierenMarkierenSeparieren
DEF @GetModuleHandle(1) !"KERNEL32","GetModuleHandleA"
DEF @LoadIcon(2) ! "USER32","LoadIconA"
DEF @LoadBitmap(2) ! "USER32","LoadBitmapA"
DEF @ImageList_Create(5) !"COMCTL32","ImageList_Create"
DEF @ImageList_AddIcon(2) !"COMCTL32","ImageList_AddIcon"
DEF @ImageList_Destroy(1) !"COMCTL32","ImageList_Destroy"
DEF @SetWindowLong(3) !"USER32","SetWindowLongA"
Def @InitCommonControls(0) !"COMCTL32","InitCommonControls"
Def RegOpenKeyEx(5) !"ADVAPI32","RegOpenKeyExA"
Def RegEnumKey(4) !"ADVAPI32","RegEnumKeyA"
Def RegCloseKey(1) !"ADVAPI32","RegCloseKey"
@InitCommonControls()
Declare hImageList&,hIcon&,Iconname#,Executehandle&,Root1&,ROOT&[2,3,10],ROOT11&
Declare Imagelist&,HIcon#,TV_INSERT#,TV_TEXT#,TV_ITEM#,REG_KEY$,REG_ROOT$,REG_ERGEBNIS$
Declare Unterlage6&,TV_ITEM_HANDLE&,TV_ITEM_HANDLE2&
Declare REG_ERGEBNIS#,REG_ERROR&,REG_HANDLE&
Declare REG_Zähler%,TV_ITEM_HANDLE1&
dim Iconname#,25
dim Hicon#,24
Dim TV_TEXT#,261
DIM REG_ERGEBNIS#,261
Declare TreeView&
DIM TV_INSERT#,48
DIM TV_ITEM#,40
Let Imagelist&=ImageList_Create(16,16,$0001,3,3) Imagelist erzeugen
Let ExecuteHandle&=GetModuleHandle(0)  Handle des laufenden Programms
Icon 0
String Iconname#,0="Weg"       Icon-Name
Let Hicon&=loadicon(Executehandle&,Iconname#) Handle des Icons ok
ImageList_AddIcon(Imagelist&,HIcon&)
Icon 1
String Iconname#,0="Windows"            Icon-Name
Let Hicon&=loadicon(Executehandle&,Iconname#) Handle des Icons ok
ImageList_AddIcon(Imagelist&,HIcon&)
Icon 2
String Iconname#,0="Stein"
Let Hicon&=loadicon(Executehandle&,Iconname#) Handle des Icons ok
ImageList_AddIcon(Imagelist&,HIcon&)
Icon 3
String Iconname#,0="Drucker"
Let Hicon&=loadicon(Executehandle&,Iconname#) Handle des Icons ok
ImageList_AddIcon(Imagelist&,HIcon&)
Icon 4
String Iconname#,0="Wasser"
Let Hicon&=loadicon(Executehandle&,Iconname#) Handle des Icons ok
ImageList_AddIcon(Imagelist&,HIcon&)
Icon 5
String Iconname#,0="Weg"
Let Hicon&=loadicon(Executehandle&,Iconname#) Handle des Icons ok
ImageList_AddIcon(Imagelist&,HIcon&)
Icon 6
String Iconname#,0="Baum"
Let Hicon&=loadicon(Executehandle&,Iconname#) Handle des Icons ok
ImageList_AddIcon(Imagelist&,HIcon&)
Icon 7
String Iconname#,0="Editor"
Let Hicon&=loadicon(Executehandle&,Iconname#) Handle des Icons ok
ImageList_AddIcon(Imagelist&,HIcon&)

PROC TVINSERT

    TVINSERT und TVINSERT-Struktur-------------------------------
    String TV_TEXT#,0=@$(4)      Der Text im Label
    long TV_INSERT#,0=@&(1)          TVins-Parent
    long TV_INSERT#,4=@&(2)         TVins-Insert After
    long TV_INSERT#,8=$0027          mask IF_TEXT,IF_IMAGE,If_SelectedImage
    long TV_INSERT#,8=$0001+$0002+ $0020+ $0004 +$0008 +$0010
    long TV_INSERT#,12=0            Htreeitem
    long TV_INSERT#,16=@&(5)          State
    long TV_INSERT#,20=$0001+$0002+$0004+$0008+$0010+$0020+$0040+$0080+$0F00+$F000 StateMAsk
    long TV_INSERT#,24=TV_TEXT#   Adress of Label
    long TV_INSERT#,28=len(@$(4))   len of Label(länge GeDimt in Tvitemtext#)
    long TV_INSERT#,32=@&(2)         Image          z.B Ordner
    long TV_INSERT#,36=@&(3)         Selected Image z.B geöffneter Ordner
    long TV_INSERT#,40=0             cChildren
    long TV_INSERT#,44=@&(6)          Lparam
    -----------------------------------------------

ENDPROC

Windowstyle 31+512
Window 10,50-600,420
Windowtitle "TreeViewControl32"
settruecolor 1
cls rgb(192,192,192)
LET UNTERLAGE6&=@Control("Dialog","",$40000000+$10000000,10,50,600,320,%HWND,3,%HINSTANCE)
Let TreeView&=@control("SysTreeView32","",$40000000+$10000000+$800000+$200000+$0002+$0010+$0020,40,20,250,300,Unterlage6&,200,%Hinstance)
@sendmessage(TreeView&,$1109,0,Imagelist&) Associate the image list with the tree
@SETWINDOWLONG(TreeView&,-16,$40000000+$10000000+$800000+$200000+$0001+$0002+$0010+$0100)
TVINSERT 0,0,1,"HKEY_LOCAL_MACHINE",$0010
@sendmessage(Treeview&,$1100,0,TV_INSERT#)
TVINSERT 0,0,1,"HKEY_USERS",$0010
@sendmessage(Treeview&,$1100,0,TV_INSERT#)
CLEAR TV_ITEM#,TV_TEXT#

While %MENUITEM<>-2

    Sleep 100
    LET TV_ITEM_HANDLE1&=@sendmessage(Treeview&,$110A,$0009,0)

    IF TV_ITEM_HANDLE1&<>TV_ITEM_HANDLE&

        LET REG_KEY$=""
        LET REG_ROOT$=""
        LET TV_ITEM_HANDLE&=TV_ITEM_HANDLE1&
        CLEAR TV_ITEM#,TV_TEXT#
        LONG TV_ITEM#,0=$11
        LONG TV_ITEM#,20=261
        LONG TV_ITEM#,16=TV_TEXT#
        LONG TV_ITEM#,4=TV_ITEM_HANDLE&
        @sendmessage(Treeview&,$110C,0,TV_ITEM#)
        LET REG_KEY$=@STRING$(TV_TEXT#,0)
        LET TV_ITEM_HANDLE2&=TV_ITEM_HANDLE&

        While TV_ITEM_HANDLE2&<>0

            LET TV_ITEM_HANDLE2&=@sendmessage(Treeview&,$110A,$3,TV_ITEM_HANDLE2&)

            IF TV_ITEM_HANDLE2&<>0

                CLEAR TV_ITEM#,TV_TEXT#
                LONG TV_ITEM#,0=$11
                LONG TV_ITEM#,20=261
                LONG TV_ITEM#,16=TV_TEXT#
                LONG TV_ITEM#,4=TV_ITEM_HANDLE2&
                @sendmessage(Treeview&,$110C,0,TV_ITEM#)
                LET REG_KEY$=""+REG_KEY$
                LET REG_KEY$=@STRING$(TV_TEXT#,0)+REG_KEY$

            endif

        wend

        LET REG_ROOT$=@SubStr$(REG_KEY$,1,"")

        IF REG_ROOT$<>""

            LET REG_KEY$=@TRANSLATE$(REG_KEY$,REG_ROOT$,"")
            CASE LEFT$(REG_KEY$,1)="" : LET REG_KEY$=@RIGHT$(REG_KEY$,@LEN(REG_KEY$)-1)

        else

            LET REG_ROOT$=REG_KEY$
            LET REG_KEY$=""

        endif

        While @sendmessage(Treeview&,$110A,$4,TV_ITEM_HANDLE&)<>0

            LET TV_ITEM_HANDLE2&=@sendmessage(Treeview&,$110A,$4,TV_ITEM_HANDLE&)
            @Sendmessage(Treeview&,$1101,0,TV_ITEM_HANDLE2&)

        wend

        IF REG_ROOT$="HKEY_USERS"

            LET REG_Error&=@RegOpenKeyEx($80000003,@addr(REG_Key$),0,$20019,@addr(REG_Handle&))

        Elseif REG_ROOT$="HKEY_LOCAL_MACHINE"

            LET REG_Error&=@RegOpenKeyEx($80000002,@addr(REG_Key$),0,$20019,@addr(REG_Handle&))

        else

            LET REG_Error&=2

        endif

        LET REG_ZÄHLER%=0

        whilenot REG_Error&

            LET REG_Error&=@RegEnumKey(REG_Handle&,REG_Zähler%,REG_Ergebnis#,261)

            IF REG_Error&=0

                LET REG_ERGEBNIS$=@string$(REG_Ergebnis#,0)
                TVINSERT TV_ITEM_HANDLE&,0,1,REG_ERGEBNIS$,$0010
                @sendmessage(Treeview&,$1100,0,TV_INSERT#)

            endif

            inc REG_Zähler%

        wend

        @RegCloseKey(REG_Handle&)
        @Sendmessage(Treeview&,$1102,$2,TV_ITEM_HANDLE&)

    endif

    DRAWTEXT 0,0,"REG_ROOT$="+REG_ROOT$+@SPACE$(255)
    DRAWTEXT 0,20,"REG_KEY$="+REG_KEY$+@SPACE$(255)

WEND

ImageList_Destroy(hImagelist&)
Dispose Iconname#
Dispose Hicon#
Dispose TV_ITEM#
DISPOSE TV_INSERT#
Dispose REG_ERGEBNIS#

Ideen und Verbesserungsvorschläge?
 
03.06.2005  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

5.138 Views

Untitledvor 0 min.
Member 862464126.03.2024
H.Brill04.01.2022
Andre Rohland13.02.2018
Torsten Boo20.09.2013
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie