Avatar billede thecokeguy Nybegynder
19. februar 2004 - 20:19 Der er 6 kommentarer og
1 løsning

Opret internetgenvej

Den fil, der bliver oprettet, når man tilføjer en hjemmeside til foretrukne [.url]. Hvordan opretter man sådan en gennem Delphi? Og hvordan henter man information fra filen til Delphi?

-På forhånd tak
Avatar billede borrisholt Novice
19. februar 2004 - 22:02 #1
function GetSpecialFolderLocation(folder: string): string;
begin
  Result := '';
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;
    OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', True);
    Result := ReadString(Folder);
  finally
    free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  IniFile: TIniFile;
  Path: string;
  reg: TRegistry;
begin
  Path := GetSpecialFolderLocation('Favorites');
  Path := Path + #92;

  IniFile := TIniFile.Create(Path + 'safe2day' + '.url');
  IniFile.WriteString('DEFAULT', 'BASEURL', 'http://www.eksperten.dk');
  IniFile.WriteString('InternetShortcut', 'URL', 'http://www.eksperten.dk');
  IniFile.WriteString('InternetShortcut', 'IconFile', 'http://www.eksperten.dk/favicon.ico');
  IniFile.WriteInteger('InternetShortcut', 'IconIndex', 1);

  IniFile.Free;
end;
Avatar billede borrisholt Novice
19. februar 2004 - 22:04 #2
hov glemte uses

uses
  Registry, Inifiles;

function GetSpecialFolderLocation(folder: string): string;
begin
  Result := '';
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;
    OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', True);
    Result := ReadString(Folder);
  finally
    free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  IniFile: TIniFile;
  Path: string;
  reg: TRegistry;
begin
  Path := GetSpecialFolderLocation('Favorites');
  Path := Path + #92;

  IniFile := TIniFile.Create(Path + 'Eksperten' + '.url');
  IniFile.WriteString('DEFAULT', 'BASEURL', 'http://www.eksperten.dk');
  IniFile.WriteString('InternetShortcut', 'URL', 'http://www.eksperten.dk');
  IniFile.WriteString('InternetShortcut', 'IconFile', 'http://www.eksperten.dk/favicon.ico');
  IniFile.WriteInteger('InternetShortcut', 'IconIndex', 1);

  IniFile.Free;
end;


Jens B
Avatar billede hrc Mester
20. februar 2004 - 15:25 #3
Borrisholt: Du strør' jo guld på din vej (smiger, smiger), men du bl.a. bruger OpenKey(..,true) - hvilket er en lille fejl, i stedet for OpenKeyReadOnly bør bruges ved læsninger. Burde man ikke også spørge på om value'en findes? Beklager at jeg er sådan en flueknepper - det er genetisk betinget ;-)

function GetSpecialFolderLocation(folder: string): string;
begin
  Result := '';
  with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;
      if OpenKeyReadOnly('\Software\Microsoft\Windows\'+
                        'CurrentVersion\Explorer\Shell Folders') then
        if ValueExists(Folder) then
          Result := ReadString(Folder);
  finally
    Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Path: string;
begin
  Path := IncludeTrailingBackslash(GetSpecialFolderLocation('Favorites'));

  with TIniFile.Create(Path + 'Eksperten' + '.url') do
    try
      WriteString('DEFAULT', 'BASEURL', 'http://www.eksperten.dk');
      WriteString('InternetShortcut', 'URL', 'http://www.eksperten.dk');
      WriteString('InternetShortcut', 'IconFile', 'http://www.eksperten.dk/favicon.ico');
      WriteInteger('InternetShortcut', 'IconIndex', 1);
    finally
      Free;
    end; // try
end;
Avatar billede borrisholt Novice
22. februar 2004 - 09:04 #4
hrc>> Nej og jo !
GetSpecialFolderLocation() burde man måske nærmer skrive om til at tage en enumerær type ind som indput istedet for en string, men den kan du jo bare lave (så er jeg fri ......)

OpenKeyReadOnly kan jeg kun erklære mig enig i!

Jens B
Avatar billede borrisholt Novice
26. februar 2004 - 20:56 #5
thecokeguy>> Sover du ?
Avatar billede hrc Mester
26. februar 2004 - 22:31 #6
borrisholt>>Jeg tror ikke det dur' med enum's da det vel er et ret dynamisk sted hvor MS og andre systemhuse kan finde på at oprette linier ad hoc.

I øvrigt: Grunden til jeg går ind og korrekser dit velfungerende svar er:
1. At lære andre at lave sikker kode. Andre kan sikkert bruge dette eksempel og så skal det være i orden.
2. Havde det været et 30 points spg. så havde jeg måske undladt, men et 100...! ;-)

/hrc

P.S. Havde aldrig overhovedet overvejet at et link var en camufleret ini-fil.
Avatar billede hrc Mester
26. februar 2004 - 22:32 #7
Er der mon i øvrigt en udløbstid for spørgsmål?
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