Forum | | | | Michael Wodrich | comme Austausch- et Diskussionsbereich pour Testprogramme, qui den Gruppenmanager betreffen.
Im Archiv ist qui dernier Schriftsatz enthalten, ebenso qui INC-Fichiers.
qui GM-Test.prf wird genutzt, um alle Module trop testen. vous liegt aussi comme EXE chez, avec cela alle la fois regarder peut.
v0.1: qui Gruppenmanager.prf ist encore pas soweit.
Es wäre hilfreich, si sich einer qui Tab-Contrôle Spezialisten fois le Doku anschaut et sich daran versucht. Dabei peux qui Dossier Gruppenmanager.prf vollkommen récente erstellt volonté (ist seulement une Kopie de GM-Test).
v0.2: Es wird umgestellt sur Treeview. Source eingepflegt.
Icônes j'ai la fois un un peu dans meiner Icon-Kiste gewühlt. sommes alles aucun eigenen, passen mais.
v0.3: Neue Version (sans GM-Test) hochgeladen...
belle Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 17.08.2005 ▲ |
| |
| | | Könntest du qui jeweils aktuelle Version de Gruppenmanager.prf ici comme Télécharger bereitstellen? Sowohl mon IE5.5 comme aussi Opera avons entier gewaltige Probleme beim markieren et kopieren qui Source. |
| | | | |
| | | prends doch den orangen Knopf - qui markiert doch den kompletten Source.
Salve. |
| | | | |
| | | qui funktioniert weder beim IE5.5 encore chez Opera... |
| | | | |
| | Dietmar Horn | alors je suis aussi justement avec IE 5.5 unterwegs (sous ME), et là funktioniert cela correcte. et chez uns im cabinet avec Win 95 / 98 et IE 5.5. également.
Salut Dietmar |
| | | Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 18.08.2005 ▲ |
| |
| | | si je avec qui souris sur den roten BUtton fahre, venez chez mir beim IE toujours qui Fehlermeldung: c'est un Laufzeitfehler aufgetreten. Soll qui Debug-Modus gestartet volonté? la ligne: 0 faute: qui Cursoreigenschaften wurden pas trouvé. Ungültiges Argument. cela Kopieren hat mais maintenant doch hingehauen. |
| | | | |
| | | peut-être es Du simple pas up-to-date. |
| | | | |
| | Michael Wodrich | Ist derrière dem Knopf un Java-Getriebe? |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 19.08.2005 ▲ |
| |
| | | Türlich. Anders ca va ldr. aussi pas.
Salve. |
| | | | |
| | | laisser wir cela seulement einmal - kopieren habe je hinbekommen.
@Michael et IF: je serait qui 3 Listboxen volontiers vers 1 Treeview ersetzen, cela sich pour Usern et den (3) Gruppenarten unterschiedlich verzweigt. Gruppenarten et User devoir dabei différent Icônes bekommen. cela Treeview sol sur qui linke Moitié des Hauptfensters. à droite devoir quelques sur Contrôle erstellte Buttons hin: Travailler effacer hinzufügen Je pour sélection imj Treeview devrait différent Buttons aktiv son. quoi haltet son de so einem Anfang? suis encore voll im Urlaubsstreß, si je Zeit finde, bau je volontiers la fois quoi zusammen.
ah oui, dans meiner Profan Aider steht, qui Bereiche pas bistrot son peut. Sollte on ensuite Bereiche pas aussi global déclarer? Clicked kennt mon Profanversion pas! s'il te plaît kompatibel trop 7.5 tenir et API verwenden (habs mir déjà umgebaut). |
| | | | |
| | | allô alle zusammen...
quoi haltet son de quelque chose dans qui Art? KompilierenMarqueSéparationGruppenmanager.prf
************** Start der Globale Declarationen **************
DEF @InitCommonControls(0) !"COMCTL32","InitCommonControls"
DEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID" "%MENUITEM" von einem Handle ermitteln
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM %MENUITEM vergleichen
DEF @ImageList_Create(5) !"COMCTL32","ImageList_Create"
DEF @ImageList_AddIcon(2) !"COMCTL32","ImageList_AddIcon"
DEF @ImageList_Destroy(1) !"COMCTL32","ImageList_Destroy"
DEF @GetModuleHandle(1) !"KERNEL32","GetModuleHandleA"
DEF @LoadIcon(2) ! "USER32","LoadIconA"
Declare Imagelist&,GU_Treeview&,Ende%,Sortierliste&
Declare TV_TEXT#,TV_INSERT#,TV_ITEM#
Declare GU_BUFFER_P#,GU_BUFFER_A#,GU_BUFFER#,Entry_COUNT#
Declare GETERROR_Buffer#
Declare UNICODE#,Attribut#,PrivilegSET#,PRIVILEG#
Declare SID#,DOMAIN#,ALLPRIVS#,ComparePriv#
Declare TV_Sonstige&,TV_Netzwerkgruppen&,TV_User&,TV_lokale_gruppen&
Declare Hinzufügen&,Löschen&,Bearbeiten&
Declare Text_Von_TV_ITEM$
Declare TV_SELECTED&,TV_ROOT&
Struct LSA_UNICODE_STRING=Length%,MaximumLength%,Buffer&
Struct LSA_OBJECT_ATTRIBUTES=Length&,RootDirectory&,Length%,MaximumLength%,Buffer&,Attributes&,SecurityDescriptor#(4),SecurityQualityOfService#(4)
************** Ende der Globale Declarationen **************
************** Start der Prozedur zum Ermitteln lokaler Gruppen ********************
Proc Liste_lokale_gruppen
Clearlist
Declare Indexzähler&,Nt_fehler&,E_read&,E_total&,Resumehandle&
Dim Entry_count#,4
Dim Gu_buffer_p#,4
Dim Gu_buffer_a#,252
Dim Gu_buffer#,32
Let Nt_fehler&=$Ea
Let Resumehandle&=0
Let Indexzähler&=0
While Nt_fehler&=$Ea
Clear Entry_count#,Gu_buffer_p#,Gu_buffer_a#,Gu_buffer#
Let Nt_fehler&=@External("Netapi32.DLL","NetLocalGroupEnum",0,0,Gu_buffer_p#,-1,@Addr(E_read&),@Addr(E_total&),@Addr(Resumehandle&))
If @Or(Nt_fehler&=$Ea,Nt_fehler&=0)
While Indexzähler&<E_read&
@External("KERNEL32.DLL","RtlMoveMemory",Gu_buffer#,@Long(Gu_buffer_p#,0)+Indexzähler&*4,4)
@External("KERNEL32.DLL","WideCharToMultiByte",0,0,@Long(Gu_buffer#,0),-1,Gu_buffer_a#,261,0,0)
Addstring @String$(Gu_buffer_a#,0)
Let IndexzÄhler&=IndexzÄhler&+1
Wend
@External("Netapi32.DLL","NetApiBufferFree",@Long(Gu_buffer_p#,0))
Endif
Wend
If Nt_fehler&<>0
Dim Geterror_buffer#,32000
@External("KERNEL32","FormatMessageA",$1000,0,Nt_fehler&,0,Geterror_buffer#,32000,0)
Let Geterror_buffer$=@String$(Geterror_buffer#,0)
Dispose Geterror_buffer#
@Messagebox(Geterror_buffer$,"Ein Fehler ist aufgetreten!",16)
Endif
Dispose Entry_count#
Dispose Gu_buffer#
Dispose Gu_buffer_p#
Dispose Gu_buffer_a#
Dispose Gu_buffer#
Dispose Gu_buffer_p#
Endproc
************** Ende der Prozedur zum Ermitteln lokaler Gruppen ********************
************** Start der Prozedur zum Listen der Netzwerkgruppen ********************
Proc Liste_netzwerkgruppen
Clearlist
Declare Indexzähler&,Nt_fehler&
Dim Entry_count#,4
Dim Gu_buffer_p#,4
Dim Gu_buffer_a#,252
Dim Gu_buffer#,32
Let Nt_fehler&=$Ea
Let Indexzähler&=0
While Nt_fehler&=$Ea
Clear Entry_count#,Gu_buffer_p#,Gu_buffer_a#,Gu_buffer#
Let Nt_fehler&=@External("Netapi32.DLL","NetQueryDisplayInformation",0,3,Indexzähler&,1,-1,Entry_count#,Gu_buffer_p#)
If @Or(Nt_fehler&=$Ea,Nt_fehler&=0)
@External("KERNEL32.DLL","RtlMoveMemory",Gu_buffer#,@Long(Gu_buffer_p#,0),20)
Let Indexzähler&=@Long(Gu_buffer#,16)
@External("KERNEL32.DLL","WideCharToMultiByte",0,0,@Long(Gu_buffer#,0),-1,Gu_buffer_a#,261,0,0)
Addstring @String$(Gu_buffer_a#,0)
@External("Netapi32.DLL","NetApiBufferFree",@Long(Gu_buffer_p#,0))
Endif
Wend
If Nt_fehler&<>0
Dim Geterror_buffer#,32000
@External("KERNEL32","FormatMessageA",$1000,0,Nt_fehler&,0,Geterror_buffer#,32000,0)
Let Geterror_buffer$=@String$(Geterror_buffer#,0)
Dispose Geterror_buffer#
@Messagebox(Geterror_buffer$,"Ein Fehler ist aufgetreten!",16)
Endif
Dispose Entry_count#
Dispose Gu_buffer#
Dispose Gu_buffer_a#
Dispose Gu_buffer#
Dispose Gu_buffer_p#
Endproc
************** Ende der Prozedur zum Listen der Netzwerkgruppen ********************
************** Start der Prozedur zum Ermitteln aller User ********************
Proc Liste_alle_user
Clearlist
Declare Indexzähler&,Nt_fehler&
Declare Geterror_buffer$
Dim Entry_count#,4
Dim Gu_buffer_p#,4
Dim Gu_buffer_a#,252
Dim Gu_buffer#,32
Let Nt_fehler&=$Ea
Let Indexzähler&=0
While Nt_fehler&=$Ea
Clear Entry_count#,Gu_buffer_p#,Gu_buffer_a#,Gu_buffer#
Let Nt_fehler&=@External("Netapi32.DLL","NetQueryDisplayInformation",0,1,Indexzähler&,1,-1,Entry_count#,Gu_buffer_p#)
If @Or(Nt_fehler&=$Ea,Nt_fehler&=0)
@External("KERNEL32.DLL","RtlMoveMemory",Gu_buffer#,@Long(Gu_buffer_p#,0),24)
Let Indexzähler&=@Long(Gu_buffer#,20)
@External("KERNEL32.DLL","WideCharToMultiByte",0,0,@Long(Gu_buffer#,0),-1,Gu_buffer_a#,261,0,0)
Addstring @String$(Gu_buffer_a#,0)
@External("Netapi32.DLL","NetApiBufferFree",@Long(Gu_buffer_p#,0))
Endif
Wend
If Nt_fehler&<>0
Dim Geterror_buffer#,32000
@External("KERNEL32","FormatMessageA",$1000,0,Nt_fehler&,0,Geterror_buffer#,32000,0)
Let Geterror_buffer$=@String$(Geterror_buffer#,0)
Dispose Geterror_buffer#
@Messagebox(Geterror_buffer$,"Ein Fehler ist aufgetreten!",16)
Endif
Dispose Entry_count#
Dispose Gu_buffer#
Dispose Gu_buffer_a#
Dispose Gu_buffer#
Dispose Gu_buffer_p#
Endproc
************** Ende der Prozedur zum Ermitteln aller User ********************
************** Start der Prozedur zum Erzeugen einer "Iconliste" **************
Proc Erzeuge_Imageliste
Declare ExecuteHandle&,Hicon&,Iconname$
Let Imagelist&=ImageList_Create(16,16,$0001,3,3) Imagelist erzeugen
Let ExecuteHandle&=@GetModuleHandle(0) Handle des laufenden Programms
LET Iconname$="Weg" Icon-Name
Let Hicon&=@LoadIcon(Executehandle&,@ADDR(Iconname$)) Handle des Icons ok
@ImageList_AddIcon(Imagelist&,HIcon&)
LET Iconname$="Windows" Icon-Name
Let Hicon&=@LoadIcon(Executehandle&,@ADDR(Iconname$)) Handle des Icons ok
@ImageList_AddIcon(Imagelist&,HIcon&)
LET Iconname$="Eimer"
Let Hicon&=@LoadIcon(Executehandle&,@ADDR(Iconname$)) Handle des Icons ok
@ImageList_AddIcon(Imagelist&,HIcon&)
LET Iconname$="Editor"
Let Hicon&=@LoadIcon(Executehandle&,@ADDR(Iconname$)) Handle des Icons ok
@ImageList_AddIcon(Imagelist&,HIcon&)
LET Iconname$="A"
Let Hicon&=@LoadIcon(Executehandle&,@ADDR(Iconname$)) Handle des Icons ok
@ImageList_AddIcon(Imagelist&,HIcon&)
LET Iconname$="Stein"
Let Hicon&=@LoadIcon(Executehandle&,@ADDR(Iconname$)) Handle des Icons ok
@ImageList_AddIcon(Imagelist&,HIcon&)
LET Iconname$="Baum"
Let Hicon&=@LoadIcon(Executehandle&,@ADDR(Iconname$)) Handle des Icons ok
@ImageList_AddIcon(Imagelist&,HIcon&)
LET Iconname$="Computer" Icon-Name
Let Hicon&=@LoadIcon(Executehandle&,@ADDR(Iconname$)) Handle des Icons ok
@ImageList_AddIcon(Imagelist&,HIcon&)
endproc
************** Ende der Prozedur zum Erzeugen einer "Iconliste" **************
************** Start der Prozedur zum Einfügen von Items in das Treeview **************
PROC Füge_Item_in_Treeview_ein
Declare ITEM_Handle&
Dim TV_TEXT#,261
DIM TV_INSERT#,48
CLEAR TV_INSERT#,TV_TEXT#
String TV_TEXT#,0=@$(4) Der Text im Label
long TV_INSERT#,0=@&(1) TVins-Parent
long TV_INSERT#,8=$0001+$0002+ $0020+ $0004 +$0008 +$0010
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#,32=@&(2) Image z.B Ordner
long TV_INSERT#,36=@&(3) Selected Image z.B geöffneter Ordner
long TV_INSERT#,44=@&(6) Lparam
LET ITEM_Handle&=@sendmessage(GU_Treeview&,$1100,0,TV_INSERT#)
Dispose TV_TEXT#
Dispose TV_INSERT#
Return ITEM_Handle&
ENDPROC
************** Ende der Prozedur zum Einfügen von Items in das Treeview **************
************** Start der Prozedur zum Füllen des Treeviews **************
Proc Update_GU_Treview
USECURSOR 2
Enablewindow GU_Treeview&,0
Declare GU_STRING$,GU_ZÄHLER%
@Sendmessage(GU_Treeview&,$1101,0,0) Treeview komplett löschen
Füge_Item_in_Treeview_ein 0,0,0,"User",$0010
LET TV_USER&=@&(0)
Füge_Item_in_Treeview_ein 0,1,1,"Lokale Gruppen",$0010
LET TV_lokale_Gruppen&=@&(0)
Füge_Item_in_Treeview_ein 0,2,2,"Netzwerkgruppen",$0010
LET TV_NETZWERKGRUPPEN&=@&(0)
Füge_Item_in_Treeview_ein 0,3,3,"Gruppen aus Token",$0010
LET TV_SONSTIGE&=@&(0)
Liste_Alle_User
@SENDMESSAGE(SORTIERLISTE&,$0184,0,0) Sortierlistbox löschen
@MoveListToList(SORTIERLISTE&)
LET GU_ZÄHLER%=0
While GU_ZÄHLER%<@GetCount(SORTIERLISTE&)
LET GU_STRING$=@GetString$(SORTIERLISTE&,GU_ZÄHLER%)
Füge_Item_in_Treeview_ein TV_User&,0,0,GU_STRING$,$0010
LET GU_ZÄHLER%=GU_ZÄHLER%+1
WEND
Liste_lokale_Gruppen
@SENDMESSAGE(SORTIERLISTE&,$0184,0,0) Sortierlistbox löschen
@MoveListToList(SORTIERLISTE&)
LET GU_ZÄHLER%=0
While GU_ZÄHLER%<@GetCount(SORTIERLISTE&)
LET GU_STRING$=@GetString$(SORTIERLISTE&,GU_ZÄHLER%)
Füge_Item_in_Treeview_ein TV_lokale_Gruppen&,0,0,GU_STRING$,$0010
LET GU_ZÄHLER%=GU_ZÄHLER%+1
WEND
Liste_NetzwerkGruppen
@SENDMESSAGE(SORTIERLISTE&,$0184,0,0) Sortierlistbox löschen
@MoveListToList(SORTIERLISTE&)
LET GU_ZÄHLER%=0
While GU_ZÄHLER%<@GetCount(SORTIERLISTE&)
LET GU_STRING$=@GetString$(SORTIERLISTE&,GU_ZÄHLER%)
Füge_Item_in_Treeview_ein TV_NetzwerkGruppen&,0,0,GU_STRING$,$0010
LET GU_ZÄHLER%=GU_ZÄHLER%+1
WEND
USECURSOR 0
Enablewindow GU_Treeview&,1
ENDPROC
************** Ende der Prozedur zum Füllen des Treeviews **************
************** Start der Prozedur zum ermitteln des selektierten Treeviewitems **************
Proc TV_Getitemtext
Parameters TV_ITEM_HANDLE&
Declare ITEMTEXT$
DIM TV_TEXT#,261
DIM TV_ITEM#,40
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(GU_Treeview&,$110C,0,TV_ITEM#)
LET ITEMTEXT$=@STRING$(TV_TEXT#,0)
Dispose TV_text#
Dispose TV_ITEM#
RETURN ITEMTEXT$
endproc
************** Ende der Prozedur zum ermitteln des selektierten Treeviewitems **************
************** Hauptprogramm *******************
Windowstyle 512 + 31
Windowtitle "Gruppenmanager"
Window 0,0-640,440
@InitCommonControls()
LET SORTIERLISTE&=CreateSortedListbox(%HWND,"",%maxx+30,%MAXY+30,0,0)
@Showwindow(SORTIERLISTE&,0)
Let bearbeiten&=@Control("Button","bearbeiten",$10000+$40000000+$10000000+$400000+$1000,440,80,150,30,%HWND,3002,%HINSTANCE)
Let hinzufügen&=@Control("Button","hinzufügen",$10000+$40000000+$10000000+$400000+$1000,440,20,150,30,%HWND,3003,%HINSTANCE)
Let löschen&=@Control("Button","löschen",$10000+$40000000+$10000000+$400000+$1000,440,140,150,30,%HWND,3004,%HINSTANCE)
Enablewindow bearbeiten&,0
Enablewindow hinzufügen&,0
Enablewindow löschen&,0
Let GU_Treeview&=@Control("SysTreeView32","",$40000000+$10000000+$800000+$200000+$0002+$0010+$0020+$0001,40,20,250,300,%HWND,3005,%Hinstance)
Erzeuge_Imageliste
@sendmessage(GU_TreeView&,$1109,0,Imagelist&) Imageliste dem Treeview zuweisen
Update_GU_Treview
Whilenot %MENUITEM=-2
waitinput
Let TV_ROOT&=@sendmessage(GU_Treeview&,$110A,$0,0)
LET TV_SELECTED&=@sendmessage(GU_Treeview&,$110A,$0009,0)
TV_Getitemtext TV_SELECTED& Text des selektierten Treeviewitems ermiteln
LET Text_Von_TV_ITEM$=@$(0)
IF @or(TV_SELECTED&=TV_User&,@or(TV_SELECTED&=TV_Lokale_Gruppen&,TV_SELECTED&=TV_Netzwerkgruppen&))
Enablewindow hinzufügen&,1
Enablewindow bearbeiten&,0
Enablewindow löschen&,0
Elseif TV_SELECTED&=TV_Sonstige&
Enablewindow bearbeiten&,0
Enablewindow hinzufügen&,0
Enablewindow löschen&,0
ElseIF TV_ROOT&=TV_Sonstige&
Enablewindow bearbeiten&,1
Enablewindow löschen&,0
Enablewindow hinzufügen&,0
elseif TV_ROOT&=TV_USER&
Enablewindow bearbeiten&,1
Enablewindow löschen&,1
Enablewindow hinzufügen&,0
elseif TV_ROOT&=TV_Netzwerkgruppen&
Enablewindow bearbeiten&,1
Enablewindow löschen&,1
Enablewindow hinzufügen&,0
elseif TV_ROOT&=TV_lokale_gruppen&
Enablewindow bearbeiten&,1
Enablewindow löschen&,1
Enablewindow hinzufügen&,0
else
Enablewindow bearbeiten&,0
Enablewindow hinzufügen&,0
Enablewindow löschen&,0
endif
IF Buttonclicked(hinzufügen&)
Beep
ElseIF Buttonclicked(bearbeiten&)
Beep
ElseIF Buttonclicked(löschen&)
Beep
endif
Drawtext 0,0,TEXT_VON_TV_ITEM$+@Space$(255) Zum Testen
Wend
@Destroywindow(GU_Treeview&)
@ImageList_Destroy(Imagelist&)
(...je hoffe Michel vergibt mir...) |
| | | | |
| | Michael Wodrich | je suis seulement avec den Icônes pas so entier d'accord.
là wir qui INCs doch sowohl sur Extra-Seiten comme aussi im Archiv anbieten: Könntest Du pas avec $I travailler? cela fait cela ganze quelque chose übersichtlicher.
oui, lokale Bereiche Gabs seulement ab v8.0 et Clicked() ab v9.0
je stell la fois mon Identifier-Suchmaschine ins Archiv...
belle Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 19.08.2005 ▲ |
| |
|
répondreOptions du sujet | 2.240 Views |
Themeninformationencet Thema hat 5 participant: |