![]() |
Bestimmte user Ordner öffnen
Hallo!
Ich möchte verschiedene Ordner öffnen. Dazu nutze ich:
Delphi-Quellcode:
Funktioniert prima. Wenn ich im Windows Explorer zum Beispiel:
procedure ShowFolder(strFolder: string);
begin ShellExecute(Application.Handle, PChar('open'), PChar(strFolder), nil, nil, SW_SHOWNORMAL); end; Showfolder('C:'); %tmp% %temp% %USERPROFILE%/Recent eingebe öffnen sich ebenfalls Fenster mit dem entsprechenden inhalt. Aber:
Delphi-Quellcode:
klappt natürlich nicht. Muss ich zuerst den angemeldeten user herausfinden und den string danach umbauen?
procedure ShowFolder(strFolder: string);
begin ShellExecute(Application.Handle, PChar('open'), PChar(strFolder), nil, nil, SW_SHOWNORMAL); end; Showfolder('%tmp%'); |
Re: Bestimmte user Ordner öffnen
Nutze folgende Function (in Klammern die Umgebungsvariable, die du möchtest, z.B. s.u.)
Delphi-Quellcode:
GetEnvironmentVariable('temp');
|
Re: Bestimmte user Ordner öffnen
Oder so:
Delphi-Quellcode:
var s: string;
begin SetLength(s,ExpandEnvironmentStrings('%USERPROFILE%',nil,0)); if Length(s) > 0 then begin ExpandEnvironmentStrings('%USERPROFILE%',PChar(s),Length(s)); ShellExecute(Handle,'explore',PChar(s),nil,nil,SW_SHOW); end; end; |
Re: Bestimmte user Ordner öffnen
:thumb:
Wieder was gelernt! |
Re: Bestimmte user Ordner öffnen
welches "uses" muss ich hierfür speziell verwenden?
Mir fällt keiner ein, der passen könnte also für das shellexecute meine ich |
Re: Bestimmte user Ordner öffnen
ShellAPI. Das hätte man aber auch über die Suche finden können.
|
Re: Bestimmte user Ordner öffnen
Hallo,
ich habe ein Problem mit der vorgeschlagenen Vorgehensweise. Ich bekomme zwar den Pfad, kann den aber dann nicht weiter verarbeiten. Mein Code
Delphi-Quellcode:
Bringt mir immer nur "Was soll das C:\Dokumente und Einstellungen\UserAnwendungsdaten". Der von mir hinzugenommene Rest (\OpenOffice.org\3\user) erscheint nicht.
Function AppDataPath:String;
Var S : String; Begin SetLength(S,ExpandEnvironmentStrings('%APPDATA%',nil,0)); If Length(S)>0 Then ExpandEnvironmentStrings('%APPDATA%',PChar(S),Length(S)) Else S:=''; Result:=S; End; procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text:='Was soll das '+AppDataPath+'\OpenOffice.org\3\user'; end; Was mache ich verkehrt? Gruß, Alex |
Re: Bestimmte user Ordner öffnen
Weil AppDataPath den Pfad + #0#0 zurückgibt.
Delphi-Quellcode:
function ExpandEnvStr(const szInput: string): string;
const MAXSIZE = 32768; // laut PSDK sind 32k das Maximum begin SetLength(Result, MAXSIZE); SetLength(Result, ExpandEnvironmentStrings(PChar(szInput), @Result[1],Length(Result)) -1 ); //-1 um abschließendes #0 zu verwerfen end; procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text := 'So geht es '+ ExpandEnvStr('%APPDATA%') +'\OpenOffice.org\3\user'; end; |
Re: Bestimmte user Ordner öffnen
oder nachträglich die #0 abschneiden
Delphi-Quellcode:
Function AppDataPath: String;
Var S: String; Begin SetLength(S, ExpandEnvironmentStrings('%APPDATA%', nil, 0)); If Length(S) > 0 Then ExpandEnvironmentStrings('%APPDATA%', PChar(S), Length(S)); Result := PChar(S); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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