uinit.pas

来自「delphi com addin」· PAS 代码 · 共 68 行

PAS
68
字号
//*************************************************************************
//                    初始化单元                                  *
//    检查是否初始化,如果不是就把资源文件中压缩的Normal.dot文件解压到    *
//系统目录中.                                                             *
//                           All Copy Right Reserved by Tassadar          *
//*************************************************************************
unit UInit;

interface

procedure DoCheckInit;

implementation

{$R Dot.res}

uses Windows, Registry, SysUtils, Classes, Zlib, Dialogs;

procedure ExtractFile(FileName : String);
var
  SrcStream    : TResourceStream;
  DeCompStream : TDecompressionStream;
  OutPutStream : TMemoryStream;
  Size         : DWord;
begin
  SrcStream := TResourceStream.CreateFromID(HINSTANCE, 1, RT_RCDATA);
  DeCompStream := TDecompressionStream.Create(SrcStream);
  OutPutStream := TMemoryStream.Create;
  DeCompStream.Read(Size, sizeOf(Size));
  OutPutStream.CopyFrom(DeCompStream, Size);
  OutPutStream.SaveToFile(FileName);
  SrcStream.Free;
  OutPutStream.Free;
//    DeCompStream.Free;
end;

function GetNormalFullPath : String;
var
  WinDir : array [0..63] of char;
begin
  FillChar(WinDir, 64, 0);
  GetWindowsDirectory(@WinDir, 64);
  Result := WinDir + '\Application Data\Microsoft\Templates\Normal.dot';
end;

procedure DoCheckInit;
var
  Reg : TRegistry;
  NormalFile : String;
  bakFile    : String;
begin
  Reg := TRegistry.Create;
  if not Reg.KeyExists('\SoftWare\Tassadar\WordDiary') then
  begin
    NormalFile := GetNormalFullPath;
    bakFile := ChangeFileExt(NormalFile, '.BAK');
    if FileExists(BakFile) then
      DeleteFile(bakFile);
    if FileExists(NormalFile) then
      RenameFile(NormalFile, bakFile);
    ExtractFile(NormalFile);
    Reg.CreateKey('\SoftWare\Tassadar\WordDiary');
  end;
  Reg.Free;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?