![]() |
Arbeitsplatz öffnen
Wie kann ich aus einem Programm heraus den Arbeitsplatz öffnen?
|
Re: Arbeitsplatz öffnen
Ich habe es jetzt etwas unfein mit einer Verknüpfung auf den Arbeitsplatz und ShellExecute gelöst.
|
Re: Arbeitsplatz öffnen
Hallo Savar,
ohne Verknüpfung haben wir das in einem ![]()
Delphi-Quellcode:
Grüße vom marabu
uses
SysUtils, ShellApi; var exeName: string; begin exeName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('WINDIR')) + 'explorer.exe'; ShellExecute(GetDeskTopWindow, 'open', PChar(exeName), '/e,/root,c:\daten', nil, SW_SHOW); end; |
Re: Arbeitsplatz öffnen
Ich glaub dir das jetzt mal ohne es auszuprobieren :wink: , auch wenn ich von diesen Funktionen noch nie etwas gehört habe.
Ich belasse es wohl bei der Verknüpfung (denn das funktioniert auch mit dem Papierkorb, Suchen... oder der Netzwerkumgebung). Trotzdem Danke. |
Re: Arbeitsplatz öffnen
Ich hab mal dieses Programm geschrieben, das so weit 1a funktioniert :-D
Ich finde das um einiges eleganter, als über eine Verknüpfung. Außerdem musst du dich nich drum bemühen, dass deine Verknüpfung stimmt und du kannst alles aus dem Programm heraus festlegen. In meinem Bespiel kannst du CSIDL_DRIVES auch durch etwas anderes ersetzen. Im moment wird direkt der Arbeitsplatz im Explorer angeziegt. Du kannst aber auch den Desktop (CSIDL_DESKTOPDIRECTORY), "Eigene Dateien" (CSIDL_PERSONAL) und viele andere benutzen...
Delphi-Quellcode:
uses
Windows, ShellAPI, ShlObj; {$R *.res} var Info: ShellExecuteInfo; List: PItemIDList; begin SHGetSpecialFolderLocation(GetActiveWindow, CSIDL_DRIVES, List); ZeroMemory(@Info, SizeOf(ShellExecuteInfo)); Info.cbSize := SizeOf(ShellExecuteInfo); Info.lpVerb := 'explore'; Info.Wnd := GetActiveWindow; Info.fMask := SEE_MASK_IDLIST; Info.lpIDList := List; Info.nShow := SW_SHOWMAXIMIZED; ShellExecuteEx(@Info) end. BTW: GetEnvironmentVariable is übrigens etwas unsicher und sollte vermieden werden! Mit GetWindowsDirectory fährst du sicher... |
Re: Arbeitsplatz öffnen
Woher weiß ich eigentlich die Konstanten (à la CSIDL_***)? Gibt's da eine Liste?
|
Re: Arbeitsplatz öffnen
|
Re: Arbeitsplatz öffnen
Zitat:
![]() |
Re: Arbeitsplatz öffnen
Cool, danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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 by Thomas Breitkreuz