자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi AddFontResourceEx문제...
2019.01.18 21:25
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
예전부터 있던 아래의
AddFontResource(PWideChar(폰트));
SendMessage(어플리케이션 핸들, WM_FONTCHANGE, 0, 0) ;
이런식으로 사용하면, 따로 Remove해주기전엔 프로그램이 종료 되어도 폰트를 계속 사용할수 있어서...
프로그램 내에서만 사용가능하게 하기위해
AddFontResourceEx함수를 사용하려고 시도를 하는데
도무지 먹히질 않네요 ..
AddFontResouceEx함수 호출을 해도. 폰트리스트를 가져와보면, 설치가 안되었는지 보이지가 않습니다..
사용한 방식은
AddFontResouceEx( PChar (파일명), FR_PRIVATE, NIL ); 이런식입니다.
혹시 해결하신분 계신가요?
델파이 버전은 10.2.3입니다.테스트 운영체제는 windows pro 64bit이구요
댓글 4
-
험프리
2019.01.21 10:05
-
Firemonkey
2019.03.03 21:28
레지스트리 권한 문제라고 만 언급되어있어서...
찾아보았는데 UAV쪽을 이야기하는건지.. 당췌 알수가 없네요..
단순 UAV권한으로는 등록이 되지 않는 것으로 보입니다.
This is maybe because Windows Firewall will not allow installation of fonts without firewall on to prevent a security risk of allowing Internet files to be added to the System32 directory directly. Windows App Container service also relies on the Firewall to function. When installing the fonts, microsoft.windows.fontdrvhost is unable to register with Firewall which causes the installation to fail.
-
험프리
2019.05.27 13:54
아래 코드와 같이 작성하니 프로그램 실행 중 폰트추가하는 기능이 정상 동작 확인했습니다.(윈도우즈 플랫폼)
첨부파일에 제가 작성한 샘플도 있으니 참고하시기 바랍니다.
implementation
uses
WinAPI.Windows, FMX.Platform.Win, Winapi.Messages;
{$R *.fmx}
procedure TForm1.Button4Click(Sender: TObject);
var
Path: string;
begin
Path := GetFontPath;
AddFontResourceEx(PChar(Path), FR_PRIVATE, nil);
SendMessage(WindowHandleToPlatform(Form1.Handle).Wnd, WM_FONTCHANGE, 0, 0)
end;
function TForm1.GetFontPath: string;
begin
Result := ExtractFilePath(ParamStr(0)) + 'NotoSansKR-Regular.otf';
end;
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-
험프리
2019.05.27 14:11
VCL에서는 다음 코드를 참고하세요. 원리는 동일합니다.
var
Path: string;
begin
Path := GetFontPath;
AddFontResourceEx(PChar(Path), FR_PRIVATE, nil);
SendMessage(Form1.Handle, WM_FONTCHANGE, 0, 0)
end;
function TForm1.GetFontPath: string;
begin
Result := ExtractFilePath(ParamStr(0)) + 'NotoSansKR-Regular.otf';
end;
Delphi AddFontResourceEx문제...
2019.01.18 21:25
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
예전부터 있던 아래의
AddFontResource(PWideChar(폰트));
SendMessage(어플리케이션 핸들, WM_FONTCHANGE, 0, 0) ;
이런식으로 사용하면, 따로 Remove해주기전엔 프로그램이 종료 되어도 폰트를 계속 사용할수 있어서...
프로그램 내에서만 사용가능하게 하기위해
AddFontResourceEx함수를 사용하려고 시도를 하는데
도무지 먹히질 않네요 ..
AddFontResouceEx함수 호출을 해도. 폰트리스트를 가져와보면, 설치가 안되었는지 보이지가 않습니다..
사용한 방식은
AddFontResouceEx( PChar (파일명), FR_PRIVATE, NIL ); 이런식입니다.
혹시 해결하신분 계신가요?
델파이 버전은 10.2.3입니다.테스트 운영체제는 windows pro 64bit이구요
댓글 4
-
험프리
2019.01.21 10:05
-
Firemonkey
2019.03.03 21:28
레지스트리 권한 문제라고 만 언급되어있어서...
찾아보았는데 UAV쪽을 이야기하는건지.. 당췌 알수가 없네요..
단순 UAV권한으로는 등록이 되지 않는 것으로 보입니다.
This is maybe because Windows Firewall will not allow installation of fonts without firewall on to prevent a security risk of allowing Internet files to be added to the System32 directory directly. Windows App Container service also relies on the Firewall to function. When installing the fonts, microsoft.windows.fontdrvhost is unable to register with Firewall which causes the installation to fail.
-
험프리
2019.05.27 13:54
아래 코드와 같이 작성하니 프로그램 실행 중 폰트추가하는 기능이 정상 동작 확인했습니다.(윈도우즈 플랫폼)
첨부파일에 제가 작성한 샘플도 있으니 참고하시기 바랍니다.
implementation
uses
WinAPI.Windows, FMX.Platform.Win, Winapi.Messages;
{$R *.fmx}
procedure TForm1.Button4Click(Sender: TObject);
var
Path: string;
begin
Path := GetFontPath;
AddFontResourceEx(PChar(Path), FR_PRIVATE, nil);
SendMessage(WindowHandleToPlatform(Form1.Handle).Wnd, WM_FONTCHANGE, 0, 0)
end;
function TForm1.GetFontPath: string;
begin
Result := ExtractFilePath(ParamStr(0)) + 'NotoSansKR-Regular.otf';
end;
——————답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.) -
험프리
2019.05.27 14:11
VCL에서는 다음 코드를 참고하세요. 원리는 동일합니다.
var
Path: string;
begin
Path := GetFontPath;
AddFontResourceEx(PChar(Path), FR_PRIVATE, nil);
SendMessage(Form1.Handle, WM_FONTCHANGE, 0, 0)
end;
function TForm1.GetFontPath: string;
begin
Result := ExtractFilePath(ParamStr(0)) + 'NotoSansKR-Regular.otf';
end;
해당 내용으로 검색해보니 다음 질문과 답변을 확인할 수 있었습니다.
http://www.tipssoft.com/bulletin/board.php?bo_table=QnA&wr_id=4567
레지스트리 접근 권한 이슈로 해당 글에서는 해결된 것으로 확인되었습니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)