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