![]() |
"Arbeitsplatz" als FileName in TOpenDialog
Hallo,
ich bin jetzt nach längerem Suchen und Ausprobieren immer noch nicht auf die Lösung meines Problems gekommen, obwohl es wahrscheinlich ziemlich banal ist. Deshalb eine kurze Erklärung: Ich möchte als FileName in einem OpenDialog "Arbeitsplatz" setzten, damit beim Öffnen die Ansicht des Arbeitsplatztes dargestellt wird. Mir ist schon dieser Code hier über den Weg gelaufen {20D04FE0-3AEA-1069-A2D8-08002B30309D} Aber ich wusste in Delphi nichts damit anzufangen. Ich hoffe ihr versteht mein Problem und könnt mir helfen. lg fishly |
Re: "Arbeitsplatz" als FileName in TOpenDialog
InitialDir angeben
|
Re: "Arbeitsplatz" als FileName in TOpenDialog
Und das noch dazu:
![]() |
Re: "Arbeitsplatz" als FileName in TOpenDialog
Delphi-Quellcode:
Also so sieht meine Deklaration dann aus.
function GetSpecialFolder(const AFolder: Integer): string;
(* const CSIDL_Desktop für Desktop, CSIDL_Controls für Systemsteuerung, CSIDL_Printers für Drucker, CSIDL_Personal für Eigene Dateien, CSIDL_Drives für Arbeitsplatz, CSIDL_Network für Netzwerkumgebung*) type _SHELLEXECUTEINFOA = record cbSize: DWORD; fMask: ULONG; Wnd: HWND; lpVerb: PAnsiChar; lpFile: PAnsiChar; lpParameters: PAnsiChar; lpDirectory: PAnsiChar; nShow: Integer; hInstApp: HINST; { Optional fields } lpIDList: Pointer; lpClass: PAnsiChar; hkeyClass: HKEY; dwHotKey: DWORD; hIcon: THandle; hProcess: THandle; end; ShellExecuteInfo = _SHELLEXECUTEINFOA; var ItemIDList: PItemIDList; hPath: PChar; ShellH: IMalloc; begin if SUCCEEDED(SHGetSpecialFolderLocation(Application.Handle, AFolder, ItemIDList)) then begin try hPath:= StrAlloc(max_path); try if SHGetPathFromIDList (ItemIDList, hPath) then Result:=hPath; finally StrDispose(hPath); end; finally if SHGetMalloc(ShellH) = NOERROR then ShellH.Free(ItemIDList); end; end else RaiseLastWin32Error; end; Wenn ich jetzt das Verzeichnis für Arbeitsplatz haben will, gibt die Funktion einen leeren String zurück. Warum? Hab ich einen Fehler in der Deklaration? |
Re: "Arbeitsplatz" als FileName in TOpenDialog
erstmal das
Delphi-Quellcode:
und schon wüßtest du, wo es hängt
try
if SHGetPathFromIDListW(ItemIDList, hPath) then Result:=hPath else RaiseLastWin32Error; finally (PS: vorher konnte Result nicht initialisiert sein) dann noch das ![]() und du wirst es nicht glauben, aber da findet man sogar was :angel2: ![]() |
Re: "Arbeitsplatz" als FileName in TOpenDialog
@fishly
ShellExecuteInfo brauchst Du nicht. Ich bekomme auch nur einen leeren String. Alternativ könnte man CSIDL_DESKTOP nehmen. Dann bist eine Ebene drüber. @himi nee nee. Das knallt. |
Re: "Arbeitsplatz" als FileName in TOpenDialog
Zitat:
Und warum "knallt" es? Weil der Befehl so nicht geht, oder was denkst du denn, warum nur ein Leerstring rauskam? :zwinker: Siehe Link. Zitat:
|
Re: "Arbeitsplatz" als FileName in TOpenDialog
Aber warum schreiben die das dann
![]() irgendwie versteh ich dass nicht so ganz. Ich meine eure Erklärungen erscheinen mir einleuchtend, aber warum steht dass dann in nem Tutorial so, als würde es funktionieren? Gibt es sonst noch eine andere Möglichkeit mein Anfangsproblem zu lösen? |
Re: "Arbeitsplatz" als FileName in TOpenDialog
Ok himi, jetzt habe ich es verstanden. :?:
Zitat:
Bei ShellExecuteInfo reicht dieser Pointer und der Explorer öffnet mit dem Arbeitsplatz. Das ShellTreeView macht es wie in Himitsus C-Forums-Link angesprochen und hangelt sich vom Desktop zum Arbeitsplatz durch. Nachtrag: Das ShellTreeView kann mit dem rfMyComputer auch nichts anfangen. Zitat:
Oder einen anderen Dialog wählen. Beim SelectDirectory lassen sich wohl auch Dateien anzeigen. |
Re: "Arbeitsplatz" als FileName in TOpenDialog
Liste der Anhänge anzeigen (Anzahl: 2)
Upps. Die Lösung ist erschreckend einfach:
Delphi-Quellcode:
Nachtrag:
OpenDialog1.InitialDir := '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}';
Administration Tools - Verwaltung '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524153}' Computer search results folder - Suchergebnisse - Computer '::{1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}' Control Panel - Systemsteuerung '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}' Default Navigator - Voreinstellung des Browsers '::{871C5380-42A0-1069-A2EA-08002B30309D}' Fonts - Schriftarten '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524152}' My Computer - Arbeitsplatz '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}' My Documents - Eigene Dateien '::{450D8FBA-AD25-11D0-98A8-0800361B1103}' Network Favorites - Netzwerkumgebung '::{208D2C60-3AEA-1069-A2D7-08002B30309D}' Network Connection/Neighbourhood - 'Netwerkverbindungen' '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}' Network Search Results computer - Suchergebnisse '::{E17D4FC0-5564-11D1-83F2-00A0C90DC849}' Printer and Faxes - 'Drucker und Faxgeräte' '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}' Recycle Bin - 'Papierkorb' '::{645FF040-5081-101B-9F08-00AA002F954E}' Scanner and Cameras - Scanner und Kameras '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{E211B736-43FD-11D1-9EFB-0000F8757FCD}' Tasks Scheduler - Geplante Tasks '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}' Web Folder - 'Webordner' '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{BDEADF00-C265-11D0-BCED-00A0C90AB50F}' |
Re: "Arbeitsplatz" als FileName in TOpenDialog
Zitat:
z.B.: Administration Tools - Verwaltung = '::{D20EA4E1-3957-11d2-A40B-0C5020524153}' |
Re: "Arbeitsplatz" als FileName in TOpenDialog
Zitat:
![]()
|
Re: "Arbeitsplatz" als FileName in TOpenDialog
Zitat:
Zitat:
Zitat:
|
Re: "Arbeitsplatz" als FileName in TOpenDialog
Alles klar
danke für die ganzen Vorschläge! Ich hatte gedacht, ich hab alles durchprobiert, aber leider hab ich nur das hier probiert:
Delphi-Quellcode:
das hat nicht funktioniert und die einfache Lösung, was blackheart vermutlich von Anfang an meinte, ist dann diese hier:
OpenDialog.FileName := '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}';
Delphi-Quellcode:
Danke für eure Hilfe
OpenDialog.InitialDir := '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}';
|
Re: "Arbeitsplatz" als FileName in TOpenDialog
Zitat:
|
Re: "Arbeitsplatz" als FileName in TOpenDialog
Manche haben eben Probleme, das auszudrücken, was sie meinen. Mal schreiben sie zu wenig und bei nächsten mal zu viel.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz