Kiffi hat geschrieben:
danke für Deinen Code! Allerdings hat die Sache einen Haken: Nach Ändern
der Namen kann ich die Items nicht mehr via RunProgram() aufrufen. Und da
sich in meinem ExplorerListGadget() neben den Verknüpfungen auch andere
Dateien und auch Ordner befinden können (habe ich im Ursprungsposting
vergessen zu erwähnen, sorry) kann ich auch nicht dann beispielsweise nicht
mehr zwischen Ordnern und Verknüpfungen unterscheiden.
Mit folgendem Code sollte es so funktionieren wie gewünscht !
Code: Alles auswählen
;##############################################
;ExplorerListGadget-Darstellung wie im Explorer
;##############################################
;Andreas , 05.04.2008
;##############################################
#Explorer = 0
Macro INDEXTOSTATEIMAGEMASK(I)
I<<8
EndMacro
Procedure.s GetDesktopFolder()
Protected Pfad$
Pfad$ = Space(260)
OpenLibrary(0,"shell32")
CallFunction(0,"SHGetSpecialFolderPathA",0,@Pfad$,0,0);Desktop
CloseLibrary(0)
ProcedureReturn Pfad$
EndProcedure
Procedure LVMUpdate(Gadget)
Count.l = SendMessage_(GadgetID(Gadget),#LVM_GETITEMCOUNT,0,0)
LV.LVITEM
LV\iSubItem = 0
For I = 0 To Count -1
Buffer$ = Space(260)
LV\pszText = @Buffer$
LV\cchTextMax = Len(Buffer$)
SendMessage_(GadgetID(Gadget),#LVM_GETITEMTEXT,I,@LV)
If GetExtensionPart(Buffer$) = "lnk"
Buffer$ = Left(Buffer$,Len(Buffer$)-4)
LV\pszText = @Buffer$
SendMessage_(GadgetID(Gadget),#LVM_SETITEMTEXT,I,LV)
LV\stateMask = #LVIS_OVERLAYMASK
LV\state = INDEXTOSTATEIMAGEMASK(2);Index 2 = Verknüpfungspfeil
SendMessage_(GadgetID(Gadget),#LVM_SETITEMSTATE,I,LV);Änderung für alle Items -> 3.Parameter = -1
EndIf
Next I
EndProcedure
Procedure IsLink(Gadget,ID)
Protected RetVal.l
Retval = 0
LV.LVITEM
If SendMessage_(GadgetID(Gadget),#LVM_GETITEMSTATE,ID,#LVIS_OVERLAYMASK)
RetVal = 1
EndIf
ProcedureReturn Retval
EndProcedure
If OpenWindow(0, 0, 0, 400, 200, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
Pfad$ = GetDesktopFolder()
Debug Pfad$
ExplorerListGadget(#Explorer, 10, 10, 380, 180, Pfad$+"\*.*");,#PB_Explorer_NoParentFolder)
ChangeListIconGadgetDisplay(0, #PB_ListIcon_LargeIcon)
LVMUpdate(#Explorer)
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_LeftDoubleClick
Pfad$ = GetGadgetText(#Explorer)
Item.l = GetGadgetState(#Explorer)
FileName$ = GetGadgetItemText(#Explorer,Item)
If GetGadgetItemState(#Explorer,Item) & #PB_Explorer_File
If IsLink(#Explorer,Item)
RunProgram(Pfad$+""+Filename$+".lnk")
Else
RunProgram(Pfad$+""+Filename$)
EndIf
EndIf
Case #PB_EventType_Change
LVMUpdate(0)
EndSelect
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf