AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bestimmte user Ordner öffnen

Ein Thema von Ajintaro · begonnen am 19. Mai 2008 · letzter Beitrag vom 22. Feb 2009
Antwort Antwort
Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#1

Bestimmte user Ordner öffnen

  Alt 19. Mai 2008, 19:00
Hallo!

Ich möchte verschiedene Ordner öffnen.
Dazu nutze ich:

Delphi-Quellcode:
procedure ShowFolder(strFolder: string);
begin
  ShellExecute(Application.Handle, PChar('open'), PChar(strFolder), nil, nil, SW_SHOWNORMAL);
end;

Showfolder('C:');
Funktioniert prima. Wenn ich im Windows Explorer zum Beispiel:

%tmp%
%temp%
%USERPROFILE%/Recent

eingebe öffnen sich ebenfalls Fenster mit dem entsprechenden inhalt.

Aber:

Delphi-Quellcode:
procedure ShowFolder(strFolder: string);
begin
  ShellExecute(Application.Handle, PChar('open'), PChar(strFolder), nil, nil, SW_SHOWNORMAL);
end;

Showfolder('%tmp%');
klappt natürlich nicht. Muss ich zuerst den angemeldeten user herausfinden und den string danach umbauen?
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Bestimmte user Ordner öffnen

  Alt 19. Mai 2008, 19:04
Nutze folgende Function (in Klammern die Umgebungsvariable, die du möchtest, z.B. s.u.)
GetEnvironmentVariable('temp');
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

Re: Bestimmte user Ordner öffnen

  Alt 19. Mai 2008, 19:09
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#4

Re: Bestimmte user Ordner öffnen

  Alt 19. Mai 2008, 19:16


Wieder was gelernt!
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#5

Re: Bestimmte user Ordner öffnen

  Alt 20. Aug 2008, 21:43
welches "uses" muss ich hierfür speziell verwenden?
Mir fällt keiner ein, der passen könnte
also für das shellexecute meine ich
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Bestimmte user Ordner öffnen

  Alt 20. Aug 2008, 22:11
ShellAPI. Das hätte man aber auch über die Suche finden können.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Bestimmte user Ordner öffnen

  Alt 22. Feb 2009, 14:35
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:
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;
Bringt mir immer nur "Was soll das C:\Dokumente und Einstellungen\UserAnwendungsdaten". Der von mir hinzugenommene Rest (\OpenOffice.org\3\user) erscheint nicht.

Was mache ich verkehrt?

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: Bestimmte user Ordner öffnen

  Alt 22. Feb 2009, 14:39
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;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: Bestimmte user Ordner öffnen

  Alt 22. Feb 2009, 14:54
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;
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz