Seite 1 von 1
ExplorerListGadget(): Extension bei Verknüpfungen ausblenden
Verfasst: 23.03.2008 15:49
von Kiffi
Hallo,
im ExplorerListGadget() (Ansicht: #PB_ListIcon_LargeIcon) werden im
Gegensatz zum Windows-Explorer die Extensionen der Verknüpfungen
angezeigt.
ExplorerListGadget():
Windows Explorer:
Kann man das irgendwie unterdrücken? Sprich: Ich möchte so genau so
eine Darstellung wie im Windows Explorer.
Danke im voraus & Grüße ... Kiffi
Verfasst: 23.03.2008 16:29
von marco2007
Hallo Kiffi,
ist zwar nicht eine direkte Lösung, aber probier mal:
Code: Alles auswählen
Procedure Open_Window()
If OpenWindow(0, 0, 0, 600, 300, "web", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(0))
WebGadget(0, 15, 35, 560, 220, "c:\")
EndIf
EndIf
EndProcedure
Open_Window()
Repeat: Until WaitWindowEvent()=#PB_Event_CloseWindow
Dan hat man im Prinzip, die selben Möglichkeiten mit der rechten Maustaste wie beim WindowsExplorer...da gibt`s sicher noch ein paar Flags, die man rausfinden muss und dann setzen kann...Man benötigt auch kein runprogram beim Doppelklick, Drag&Drop funkt, ...
lg
Marco
Verfasst: 23.03.2008 21:00
von Kiffi
marco2006 hat geschrieben:ist zwar nicht eine direkte Lösung, aber probier mal:
Danke für Deine Antwort! Deine Lösung ist zwar ziemlich pfiffig (:allright:), aber der
Einfachheit halber möchte ich eigentlich lieber das ExplorerListGadget() verwenden.
Ich bastel mir gerade einen trivialen Programmstarter und benötige
beispielsweise den Programmstart via Einfachklick. Ich befürchte, dass das
beim WebGadget (FolderView) wieder in einem Callback-Massaker ausarten
würde.
Nochmals Danke & Grüße ... Kiffi
Verfasst: 05.04.2008 10:24
von Andreas
Code: Alles auswählen
;##############################################
;ExplorerListGadget-Darstellung wie im Explorer
;##############################################
;Andreas , 05.04.2008
;##############################################
Macro INDEXTOSTATEIMAGEMASK(I)
I<<8
EndMacro
If OpenWindow(0, 0, 0, 400, 200, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
Pfad$ = Space(260)
OpenLibrary(0,"shell32")
CallFunction(0,"SHGetSpecialFolderPathA",WindowID(0),@Pfad$,0,0)
CloseLibrary(0)
ExplorerListGadget(0, 10, 10, 380, 180, Pfad$+"\*.lnk", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)
ChangeListIconGadgetDisplay(0, #PB_ListIcon_LargeIcon)
Count.l = SendMessage_(GadgetID(0),#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(0),#LVM_GETITEMTEXT,I,@LV)
Buffer$ = StringField(Buffer$,0,".")
LV\pszText = @Buffer$
SendMessage_(GadgetID(0),#LVM_SETITEMTEXT,I,LV)
Next I
LV\stateMask = #LVIS_OVERLAYMASK
LV\state = INDEXTOSTATEIMAGEMASK(2);Index 2 = Verknüpfungspfeil
SendMessage_(GadgetID(0),#LVM_SETITEMSTATE,-1,LV);Änderung für alle Items -> 3.Parameter
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Verfasst: 05.04.2008 16:02
von Andreas
Und hier nochmal aufbereitet
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)
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 Right(Buffer$,3) = "lnk"
Buffer$ = StringField(Buffer$,0,".")
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
If OpenWindow(0, 0, 0, 400, 200, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
Pfad$ = GetDesktopFolder()
ExplorerListGadget(#Explorer, 10, 10, 380, 180, Pfad$+"\*.lnk");,#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_Change
LVMUpdate(0)
EndSelect
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
Verfasst: 06.04.2008 00:06
von Kiffi
Hallo Andreas,
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.
Grüße ... Kiffi
Verfasst: 06.04.2008 08:51
von Andreas
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
Verfasst: 06.04.2008 10:51
von Kiffi
Andreas hat geschrieben:Mit folgendem Code sollte es so funktionieren wie gewünscht !
Jau, jetzt klappt das so, wie ich mir das vorgestellt habe! Danke für Deine Hilfe
Grüße ... Kiffi