ExplorerTreeGadget - Desktop mit rein bekommen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

ExplorerTreeGadget - Desktop mit rein bekommen

Beitrag von STARGÅTE »

Tachchen,

beim ExplorerTreeGadget bekomme ich ja als Übergeordnetes Element den Arbeitsplatz.
Nun möchte ich aber wie bei andere Programmen auch, den Desktop also übergeordnestes Element haben, welcher dann den Arbeitsplatz und die Ordner auf dem Desktop enthält.

Klar komme ich da auch über Dokumente und Einstellungen usw hin, aber geht das nicht auch so wie oben beschrieben ?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Keine Ahnung.
Hab es mal mit BrowseForFolder probiert, da gehts:

Code: Alles auswählen

Procedure.s GetSpecialFolder(CSIDL.l)
  Protected *itemid.ITEMIDLIST
  Protected location.s = Space(#MAX_PATH)

  If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
    If SHGetPathFromIDList_(*itemid, @location)
      CoTaskMemFree_(*itemid)
      If Right(location, 1) <> "\" : location + "\" : EndIf
      ProcedureReturn location
    EndIf
  EndIf
EndProcedure

Procedure BrowseCallbackProc(hwnd, msg, lParam, lData)
  Protected szDir.s = Space(#MAX_PATH)
  Select msg
    Case #BFFM_INITIALIZED
      SendMessage_(hwnd, #BFFM_SETSELECTION, #BFFM_INITIALIZED, lData)
    Case #BFFM_SELCHANGED
      If SHGetPathFromIDList_(lParam, @szDir)
        SendMessage_(hwnd, #BFFM_SETSTATUSTEXT, 0, @szDir)
      EndIf
  EndSelect
EndProcedure

Procedure.s BrowseForFolder(Style, Titel.s, Path.s)
  Protected Folder.s = Space(#MAX_PATH)
  Protected Dir.BROWSEINFO
  Protected result.l, result2.l
  Protected Root.s = GetSpecialFolder(#CSIDL_DESKTOP)
  Dir\hwndOwner = GetActiveWindow_()
  CoInitialize_(#Null)
  Dir\pidlRoot = SHGetPathFromIDList_(result2, @Root)
  Dir\pszDisplayName = @Folder
  Dir\lpszTitle = @Titel
  Dir\ulFlags = Style
  Dir\lpfn = @BrowseCallbackProc()
  Dir\lParam = @Path
  result = SHBrowseForFolder_(@Dir)
  SHGetPathFromIDList_(result, @Folder)
  If Folder <> ""
    If FileSize(Folder) = - 2
      If Right(Folder, 1) <> "\" : Folder + "\" : EndIf
    EndIf
  EndIf
  CoTaskMemFree_(result2)
  CoTaskMemFree_(result)
  ProcedureReturn Folder
EndProcedure



BrowseForFolder(Style, Titel.s, "")
Ob Dir das weiterhilft weiß ich nicht
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

danke schon mal, aber leider nicht, es sollte schon vom Typ her als ExplorerTreeGadget verwendbar sein, also kein Requester.

Gibs da nicht auch n schnellen API Befhel der mir das "Included" ?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten