델파이에서 사용하는 메세지들은
consts.pas 에 선언되어있습니다.
이 파일은 rtl.bpl에 포함되는 유닛이므로 사용자가 재정의할 수 없습니다만
후킹을 이용하면 간단히 해결할 수 있습니다.
이하 코드
unit LanguageControl;
interface
implementation
uses
Windows, Consts;
// 리소스 문자열에 새 값을 할당한다
procedure HookResourceString(ResStringRec: pResStringRec; NewStr: pChar) ;
var
OldProtect: DWORD;
begin
VirtualProtect(ResStringRec, SizeOf(ResStringRec^), PAGE_EXECUTE_READWRITE, @OldProtect) ;
ResStringRec^.Identifier := Integer(NewStr) ;
VirtualProtect(ResStringRec, SizeOf(ResStringRec^), OldProtect, @OldProtect) ;
end;
initialization
// consts.pas에 선언된 문자 리소스들을 한국어로 번역한다.
HookResourceString(@SOpenFileTitle , '열기') ;
HookResourceString(@SCantWriteResourceStreamError , '읽기 전용 리소스 스트림에 쓸 수 없습니다') ;
...
나머지는 ...??
...
end.
출처 : delphi.about.com
|