![]() |
Desktop-Pfad ermitteln
Diese Funktion muss in den Quellcode eingefügt werden:
Delphi-Quellcode:
So muss die Ereignis-Prozedur aussehen (Ausgabe des Pfades in einer Messagebox):
function ReadStringFromRegAPI(const p_sSubKey : string; const p_sValueName : string;var p_sResult : string) : integer;
var hResult : HKEY; dwMaxValueLen : DWORD; szResult : PChar; begin Result := RegOpenKeyEx(HKEY_CURRENT_USER,PChar(p_sSubKey),0,KEY_ALL_ACCESS,hResult); if Result <> ERROR_SUCCESS then begin exit; end; try Result := RegQueryInfoKey(hResult,nil,nil,nil,nil,nil,nil,nil,nil,@dwMaxValueLen,nil,nil); if Result <> ERROR_SUCCESS then begin exit; end; inc(dwMaxValueLen); szResult := StrAlloc(dwMaxValueLen); try Result := RegQueryValueEx(hResult,PChar(p_sValueName),nil,nil,PByte(szResult),@dwMaxValueLen); if Result <> ERROR_SUCCESS then begin exit; end; p_sResult := trim(szResult); finally StrDispose(szResult); end; finally RegCloseKey(hResult); end; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var iResult : integer; sResult : string; begin iResult := ReadStringFromRegAPI('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Desktop',sResult); if iResult <> ERROR_SUCCESS then begin ShowMessage(SysErrorMessage(iResult)); end else begin ShowMessage(sResult); end; end; |
Hallo Thomas,
leider muss ich sagen: das ist eine schlechte Idee. Microsoft selbst schreibt, dass man die Pfade nicht aus der Registry auslesen darf, weil sich die Orte, an denen sie stehen, möglicherweise in künftigen Windows-Versionen ändern. Dann dürfte man ein großen Problem haben. Anstelle der Registry-Pfade soll man die Funktion SHGetSpecialFolderLocation() benutzen (wie man das macht, habe ich ![]() MfG, d3g |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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