最近在做一个多语言版本,上网打听说可以利用IE的多语言动态库实现程序中多语言的自由切换
不知什么原理,请高手解答解答
unit uCodePageConverter;
interface
uses
Windows;
const
IID_MLangConvertCharset: TGUID = '{D66D6F98-CDAA-11D0-B822-00C04FC9B31F}';
CLASS_MLangConvertCharset :TGUID = '{D66D6F99-CDAA-11D0-B822-00C04FC9B31F}';
type
tagMLCONVCHARF = DWORD;
const
MLCONVCHARF_AUTODETECT: tagMLCONVCHARF = 1;
MLCONVCHARF_ENTITIZE : tagMLCONVCHARF = 2;
type
tagCODEPAGE = UINT;
const
CODEPAGE_Thai : tagCODEPAGE = 0874;
CODEPAGE_Japanese : tagCODEPAGE = 0932;
CODEPAGE_Chinese_PRC : tagCODEPAGE = 0936;
CODEPAGE_Korean : tagCODEPAGE = 0949;
CODEPAGE_Chinese_Taiwan : tagCODEPAGE = 0950;
CODEPAGE_UniCode : tagCODEPAGE = 1200;
CODEPAGE_Windows_31_EastEurope : tagCODEPAGE = 1250;
CODEPAGE_Windows_31_Cyrillic : tagCODEPAGE = 1251;
CODEPAGE_Windows_31_Latin1 : tagCODEPAGE = 1252;
CODEPAGE_Windows_31_Greek : tagCODEPAGE = 1253;
CODEPAGE_Windows_31_Turkish : tagCODEPAGE = 1254;
CODEPAGE_Hebrew : tagCODEPAGE = 1255;
CODEPAGE_Arabic : tagCODEPAGE = 1256;
CODEPAGE_Baltic : tagCODEPAGE = 1257;
type
IMLangConvertCharset = interface
['{D66D6F98-CDAA-11D0-B822-00C04FC9B31F}']
function Initialize(uiSrcCodePage: tagCODEPAGE; uiDstCodePage: tagCODEPAGE;dwProperty: tagMLCONVCHARF): HResult; stdcall;function GetSourceCodePage(out puiSrcCodePage: tagCODEPAGE): HResult; stdcall;
function GetDestinationCodePage(out puiDstCodePage: tagCODEPAGE): HResult; stdcall;
function GetProperty(out pdwProperty: tagMLCONVCHARF): HResult; stdcall;
function DoConversion(pSrcStr: PChar; pcSrcSize: PUINT; pDstStr: PChar; pcDstSize: PUINT
): HResult; stdcall;function DoConversionToUnicode(pSrcStr: PChar; pcSrcSize: PUINT; pDstStr: PWChar; pcDstSize: PUINT): HResult; stdcall;function DoConversionFromUnicode(pSrcStr: PWChar; pcSrcSize: PUINT; pDstStr: PChar; pcDstSize: PUINT): HResult; stdcall;
end;CoMLangConvertCharset = class
class function Create: IMLangConvertCharset;
class function CreateRemote(const MachineName: string): IMLangConvertCharset;
end;implementationusesComObj;{ CoMLangConvertCharset }class function CoMLangConvertCharset.Create: IMLangConvertCharset;
begin
Result := CreateComObject(CLASS_MLangConvertCharset) as IMLangConvertCharset;
end;
class function CoMLangConvertCharset.CreateRemote(const MachineName: string
): IMLangConvertCharset;begin
Result := CreateRemoteComObject(MachineName, CLASS_MLangConvertCharset
) as IMLangConvertCharset;
end;
end.