Avatar billede skalerbar Nybegynder
21. maj 2001 - 13:25 Der er 3 kommentarer og
1 løsning

Slette/Tilføje skrifttyper

Jeg har et program der konflikter med nogle skrifttyper.
Kan man med delphi lave et lille program der henholdsvis Slette/Tilføje disse skrifttyper fra windows, så jeg er fri for at gøre dette manuelt hver gang?
Hvis ja hvordan. Hvis det kan gøres simplere på anden måde, må det gerne besvares anderledes.
Avatar billede borrisholt Novice
21. maj 2001 - 14:05 #1
en knap og ed editfelt samt det følgende det skulle virke ..


uses
  Registry;
const
  { Registry key where Folder information is kept }
  SFolderKey = \'\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\';

function GetFolderLocation(const FolderType: string): string;
{ Retrieves from registry path to folder indicated in FolderType }
begin
  with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;
      if not OpenKey(SFolderKey, False) then { open key where shell folder information is kept. }
        raise ERegistryException.CreateFmt(\'Folder key \"%s\" not found\', [SFolderKey]);
      Result := ReadString(FolderType);  { Get path for specified folder }
      if Result = \'\' then
        raise ERegistryException.CreateFmt(\'\"%s\" item not found in registry\',[FolderType]);
      CloseKey;
    finally
      Free;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  s,t,u : String;
  Permanent : Boolean;
  VerInfo : OSVersionInfo;
begin
  Permanent := true; //Flag for om fonten skal gøres permenent i systememt


  if not Permanent then
  begin
    AddFontResource(Pointer(Edit1.Text));
    SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );
    exit;
  end;

  s:= GetFolderLocation(\'Fonts\');
  t:= ExpandFileName(Edit1.text);
  u := ExtractFileName(t);
  s:= s+\'\\\'+ u;
  CopyFile(Pointer(t), Pointer(s), false);
  AddFontResource(Pointer(s));
  with TRegistry.Create do
  try
    VerInfo.dwOSVersionInfoSize := sizeof(OSVersionInfo);
    GetVersionEx(VerInfo);
    RootKey := HKEY_LOCAL_MACHINE;
    if VerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
      OpenKey(\'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Fonts\', false)
    else
      OpenKey(\'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts\', false);

    WriteString( \'<name of the font>\', GetFolderLocation(\'Fonts\'));
    CloseKey;
  finally
    free;
  end;

  SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0 );

end;


Jens B http://fotx.net/borrisholt
Avatar billede skalerbar Nybegynder
21. maj 2001 - 15:37 #2
Tak for svaret, men umiddelbart virker det ikke efter hensigten.
Kan du give mig et mere specifikt eksempel (jeg skal gerne give flere point).
Feks , med en forudindtastet skrifttype der ligger i : \"C:\\WIN98\\FontBack\"
Windows nuværende fonte ligger i \"C:\\WIN98\\Fonts\".
Denne skrifttype skal henholdsvis slettes fra \"C:\\WIN98\\Fonts\", og tilføjes fra \"C:\\win98\\fontback\" til C:\\WIN98\\Fonts.
Avatar billede ziron Nybegynder
21. maj 2001 - 21:32 #3
hvad har du en fil i C:\\WIN98\\FontBack som skal over i C:\\WIN98\\Fonts???

/ZIRON
Avatar billede borrisholt Novice
22. maj 2001 - 12:04 #4
Så nu har jeg lavet en dims der kan hvad du spørger om. Du kan hente den her : http://www.borrisholt.com/Eksperten/fontinst.zip (med source og exe fil)

Hva .. er jeg den eneste der skal til Eksperten fest (www.ekspertenfest.dk)

Jens B
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