Avatar billede freeall Nybegynder
16. juli 2002 - 09:08 Der er 13 kommentarer og
2 løsninger

Windows' apps dir

Hvordan får man Windows' apps dir?
Plejer at være c:\program files eller lign.

Der skulle være nogenlunde samme funktion til også at få de andre dirs ud.
Avatar billede stoney Nybegynder
16. juli 2002 - 09:10 #1
procedure TForm1.Button4Click(Sender: TObject);

var
  ssize: UINT;
  winDir: string;
begin
  ssize := GetWindowsDirectory(nil, 0);
  if ssize > 0 then begin
    SetLength(winDir, ssize);
    GetWindowsDirectory(PChar(winDir), ssize);
    Label1.Caption := winDir;
  end;


end;

Stoney
Avatar billede freeall Nybegynder
16. juli 2002 - 09:15 #2
Det skulle være apps diret og ikke windows diret.
Avatar billede stoney Nybegynder
16. juli 2002 - 09:17 #3
ups sorry

uses shlobj


procedure TForm1.Button1Click(Sender: TObject);
var
  pidl: PItemIDList;
  Path: array[0..MAX_PATH] of char;
begin

  SHGetSpecialFolderLocation(Handle,  CSIDL_PROGRAMS, pidl);
  SHGetPathFromIDList(pidl,path);
  ShowMessage(path);
end;

Stoney
Avatar billede snowball Novice
16. juli 2002 - 09:23 #4
stoney: Det er da heller ikke den du skriver i andet forsøg. Der får du jo bare hvor genvejene i ens Start menu ligger (f.eks. C:\Documents and Settings\<bruger>\Start Menu\Programs) og ikke f.eks. C:\Program files !

Snowball
Avatar billede snowball Novice
16. juli 2002 - 09:30 #5
Om ikke andet, så kan du i hvert fald læses den i RegDB'en i HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion og så nøglen ProgramFilesDir !

Men det ville da ikke undre mig hvis der er en lettere måde i stil med det Stoney har skrevet ;)

Snowball
Avatar billede freeall Nybegynder
16. juli 2002 - 09:30 #6
Yeah. Den virker heller ikke;)
Men stoney, 3. gang er lykkens gang, hehe
Avatar billede freeall Nybegynder
16. juli 2002 - 09:31 #7
snowball, ahh, det kunne man jo gøre. Ville mok være smartest.
Avatar billede stoney Nybegynder
16. juli 2002 - 09:32 #8
På min W2K skriver den stien

Måske CSIDL_PROGRAMS skal erstattes med  CSIDL_COMMON_PROGRAMS

Stoney
Avatar billede freeall Nybegynder
16. juli 2002 - 09:34 #9
Giver ikke det rigtige resultat, heller
Avatar billede snowball Novice
16. juli 2002 - 09:35 #10
stoney: Det gør den ikke på min Win2k ! Og sætter du COMMON ind får du bare C:\Documents and Settings\All Users\Start Menu\Programs i stedet for den brugerspecifikke !

Snowball
Avatar billede stoney Nybegynder
16. juli 2002 - 09:49 #11
Det må være for tidligt på dagen for mig. I har ret.

Function GetProgramFilesDir : string;
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', false);
    result := reg.ReadString('ProgramFilesDir');
  finally
    reg.free;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 
  ShowMessage(GetProgramFilesDir);
end;

Stoney
Avatar billede freeall Nybegynder
17. juli 2002 - 11:24 #12
Hmmm. Hvem skal nu have point. Ham der kom med idéen, eller ham der bragte idéen?

Anyways, opret et svar.
Avatar billede snowball Novice
17. juli 2002 - 11:34 #13
Vi kan vel bare dele !? ;)

Snowball
Avatar billede stoney Nybegynder
17. juli 2002 - 12:35 #14
jep :-)

Stoney
Avatar billede freeall Nybegynder
18. juli 2002 - 11:18 #15
done that
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester