Seite 1 von 1

ExplorerTreeGadget - Desktop mit rein bekommen

Verfasst: 17.01.2009 23:24
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 ?

Verfasst: 17.01.2009 23:44
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

Verfasst: 18.01.2009 00:04
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" ?