亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lock_main.pas

?? EXELOCK 1.83 EXE文件加密器的源代碼
?? PAS
字號:
unit lock_main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  TFlatButtonUnit, StdCtrls, TFlatEditUnit, ComCtrls, ShellAPI,
  TFlatCheckBoxUnit, TFlatHintUnit, ExtCtrls;

type
  TForm1 = class(TForm)
    Button_Go: TFlatButton;
    Button_Exit: TFlatButton;
    OpenDialog1: TOpenDialog;
    Edit_Pass: TFlatEdit;
    ProgressBar1: TProgressBar;
    StaticText1: TStaticText;
    Button_OpenFile: TFlatButton;
    StaticText2: TStaticText;
    Edit_Pass1: TFlatEdit;
    Button_About: TFlatButton;
    StaticText_Pass1: TStaticText;
    Edit_FileName: TFlatEdit;
    CheckBox_BackUp: TFlatCheckBox;
    FlatHint1: TFlatHint;
    Button_UnGo: TFlatButton;
    Panel1: TPanel;
    Label_Msg: TLabel;
    Button_Directory: TFlatButton;
    procedure Button_GoClick(Sender: TObject);
    procedure Button_ExitClick(Sender: TObject);
    procedure Button_OpenFileClick(Sender: TObject);
    procedure Button_AboutClick(Sender: TObject);
    procedure Button_UnGoClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button_DirectoryClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Edit_FileNameChange(Sender: TObject);
  private
    CheckTimes:Byte;
    procedure ResetForm;
    procedure BusyForm;
    procedure DoLock;
    procedure DoUnLock;
    procedure CopyLockedFile(var FromFile, ToFile: String);
    procedure GetPassDialogFile(FileName: String);
    procedure CheckOpFile(FileName: String);
    procedure WMDropFiles(var Msg:TWMDropFiles); message WM_DROPFILES;

    { Private declarations }
  public
    { Public declarations }
  end;

const
  Error_FileNotExists='對不起,選的文件不存在,不能繼續。';
  Error_NoPass='對不起,密碼不能為空,請輸入密碼。';
  Error_PassNotSame='兩次密碼不一致,請檢查并重新輸入。';
  Error_FileLocked='文件[%s]已經加密,不能繼續。';
  Error_FileNotLocked='文件[%s]沒有加密,不能繼續。';
  Error_Thread='對不起,建立多線程錯誤,不能繼續。';
  Error_PassWrong='密碼錯誤,還有%d次操作機會。';
  Error_FileType='文件[%s]類型不是EXE,加密后可能出錯。';
  Error_FileAttribute='文件[%s]屬性只讀,不能繼續。';
  Msg_DoLock='文件[%s]沒有加密,可以加密。';
  Msg_DoUnLock='文件[%s]已經加密,可以解密。';
  Msg_Over='密碼3次錯誤,程序將自動退出。';
  Msg_BeginLock='開始加密[%s]文件,請稍后!';
  Msg_BeginUnLock='開始解密[%s]文件,請稍后!';
  Msg_EndLock='文件[%s]加密完成,謝謝使用。';
  Msg_EndUnLock='文件[%s]解密完成,謝謝使用。';
  Msg_BeginBackUpFile='正在備份[%s]文件,請稍后!';

var
  Form1: TForm1;

implementation

uses lock_about;

{$R *.DFM}
{$R 1.RES}

procedure TForm1.ResetForm;
begin
  CheckTimes:=1;
  ProgressBar1.Position:=0;
  Label_Msg.Caption:='信息';
  Edit_Pass.Enabled:=True;
  Edit_Pass1.Enabled:=True;
  Edit_Pass.Text:=#0;
  Edit_Pass1.Text:=#0;
  Button_Go.Enabled:=True;
  Button_UnGo.Enabled:=True;
  Button_Exit.Enabled:=True;
  Edit_FileName.Enabled:=True;
  Button_OpenFile.Enabled:=True;
  Button_Directory.Enabled:=True;
  CheckBox_BackUp.Enabled:=True;
  StaticText_Pass1.Enabled:=True;
end;

procedure TForm1.BusyForm;
begin
  Edit_Pass.Enabled:=False;
  Edit_Pass1.Enabled:=False;
  Button_Go.Enabled:=False;
  Button_UnGo.Enabled:=False;
  Button_Exit.Enabled:=False;
  Edit_FileName.Enabled:=False;
  Button_OpenFile.Enabled:=False;
  Button_Directory.Enabled:=False;
end;

procedure TForm1.CopyLockedFile(var FromFile,ToFile:String);
var
  OpStruc:TSHFileOpStruct;
  FromBuf,ToBuf:packed array[0..2047]of char;
begin
  fillchar(frombuf,sizeof(frombuf),0);
  fillchar(tobuf,sizeof(tobuf),0);
  StrpCopy(frombuf,fromfile);
  StrpCopy(tobuf,tofile);
  with OpStruc do
  begin
    wnd:=handle;
    wFunc:=FO_COPY;
    pfrom:=@frombuf;
    pto:=@tobuf;
    fFlags:=FOF_SILENT or FOF_NOCONFIRMATION;
    fAnyOperationsAborted:=false;
    hNameMappings:=nil;
    lpszProgressTitle:=nil;
  end;
  ShFileOperation(OpStruc);
end;

procedure TForm1.GetPassDialogFile(FileName:String);
var
  ExeRes:TResourceStream;
begin
  ExeRes:=TResourceStream.Create(Hinstance,'PassDialogFile','EXEFILE');
  ExeRes.SavetoFile(FileName);
  ExeRes.Free;
end;

function LockFile(P:pointer):Longint;stdcall;
  function jjm(S:String):String;
  var
    i:Byte;
  begin
    for i:=1 to Length(S) do
      S[i]:=Char(ord(S[i]) xor (i+3));
    jjm:=S;
  end;
var
  FsName,FtName,FbName:String;
  iTargetFile,iSourceFile:Integer;
  GetFlag,Flag:String[7];
  MyBuf:packed array[0..2047]of Char;
  NumRead,NumWritten:Integer;
  LockedFile:record
    Name:ShortString;
    Size:Integer;
    PassWord:String[15];
    Encrypted:Boolean;
  end;
  Successed:Boolean;
begin
  Flag:='@@#%#@@';
  Successed:=False;
  with Form1 do
  begin
    BusyForm;
    FsName:=Edit_FileName.Text;
    FbName:=FsName+'.BAK';
    try
      iSourceFile:=FileOpen(FsName,fmOpenRead or fmShareDenyNone);
      { get flag from file which will be encrypted }
      FileSeek(iSourceFile,-SizeOf(Flag),soFromEnd);
      FileRead(iSourceFile,GetFlag,SizeOf(GetFlag));
      if GetFlag<>Flag then
      begin
        { check whether backup file }
        if CheckBox_BackUp.Checked then
        begin
          Label_Msg.Caption:=Format(Msg_BeginBackUpFile,[ExtractFileName(FsName)]);
          CopyLockedFile(FsName,FbName);
        end;
        { begin lock }
        with LockedFile do
        begin
          Name:=ExtractFileName(FsName);
          Size:=FileSeek(iSourceFile,0,soFromEnd)+SizeOf(LockedFile);
          PassWord:=jjm(Edit_Pass.Text);
          Encrypted:=False;
        end;
        { get passdialogfile to currect directory }
        FtName:=ExtractFilePath(FsName)+'_'+LockedFile.Name;
        GetPassDialogFile(FtName);
        { set progressbar }
        ProgressBar1.Max:=LockedFile.Size div SizeOf(MyBuf);
        ProgressBar1.Position:=0;
        Label_Msg.Caption:=Format(Msg_BeginLock,[LockedFile.Name]);
        { begin copy }
        iTargetFile:=FileOpen(FtName,fmOpenReadWrite);
        FileSeek(iSourceFile,0,soFromBeginning);
        FileSeek(iTargetFile,0,soFromEnd);
        repeat
          ProgressBar1.Position:=ProgressBar1.Position+1;
          NumRead:=FileRead(iSourceFile,MyBuf,SizeOf(MyBuf));
          NumWritten:=FileWrite(iTargetFile,MyBuf,NumRead);
        until (NumRead=0) or (NumWritten<>NumRead);
        FileWrite(iTargetFile,LockedFile,SizeOf(LockedFile));
        FileWrite(iTargetFile,Flag,SizeOf(Flag));
        Successed:=True;
        { end copy }
        Label_Msg.Caption:=Format(Msg_EndLock,[LockedFile.Name]);
      end else
      begin
        Label_Msg.Caption:=Format(Error_FileLocked,[ExtractFileName(FsName)]);
      end;
    finally
      FileClose(iSourceFile);
      FileClose(iTargetFile);
    end;
    if Successed then
    begin
      DeleteFile(FsName);
      RenameFile(FtName,FsName);
    end;
    Sleep(1000);
    CheckOpFile(Edit_FileName.Text);
  end;
end;

function UnLockFile(P:pointer):Longint;stdcall;
  function jjm(S:String):String;
  var
    i:Byte;
  begin
    for i:=1 to Length(S) do
      S[i]:=Char(ord(S[i]) xor (i+3));
    jjm:=S;
  end;
var
  FsName,FtName:String;
  iSourceFile,iTargetFile:Integer;
  NumRead,NumWritten:Integer;
  MyBuf:packed array[0..2047]of Char;
  GetFlag,Flag:String[7];
  LockedFile:record
    Name:ShortString;
    Size:Integer;
    PassWord:String[15];
    Encrypted:Boolean;
  end;
  FileStart,FileEnd:Integer;
  Successed:Boolean;
begin
  Flag:='@@#%#@@';
  Successed:=False;
  with Form1 do
  begin
    BusyForm;
    FsName:=Edit_FileName.Text;
    try
      iSourceFile:=FileOpen(FsName,fmOpenRead or fmShareDenyNone);
      FileSeek(iSourceFile,-SizeOf(Flag),soFromEnd);
      FileRead(iSourceFile,GetFlag,SizeOf(GetFlag));
      if GetFlag=Flag then
      begin
        FileSeek(iSourceFile,-Sizeof(LockedFile)-SizeOf(Flag),soFromEnd);
        FileRead(iSourceFile,LockedFile,SizeOf(LockedFile));
        if LockedFile.PassWord=jjm(Edit_Pass.Text) then
        begin
          { set progressbar }
          ProgressBar1.Max:=LockedFile.Size div SizeOf(MyBuf);
          ProgressBar1.Position:=0;
          Label_Msg.Caption:=Format(Msg_BeginUnLock,[LockedFile.Name]);

          FileStart:=LockedFile.Size+SizeOf(Flag);
          FileEnd:=SizeOf(LockedFile)+SizeOf(Flag);
          try
            FtName:=ExtractFilePath(FsName)+'_'+LockedFile.Name;
            iTargetFile:=FileCreate(FtName);
            FileSeek(iSourceFile,-FileStart,soFromEnd);
            repeat
              ProgressBar1.Position:=ProgressBar1.Position+1;
              NumRead:=FileRead(iSourceFile,MyBuf,SizeOf(MyBuf));
              if NumRead=SizeOf(MyBuf)then
                NumWritten:=FileWrite(iTargetFile,MyBuf,NumRead) else
                NumWritten:=FileWrite(iTargetFile,MyBuf,NumRead-FileEnd);
            until (NumRead=0) or (NumWritten<>NumRead);
            Successed:=True;
            Label_Msg.Caption:=Format(Msg_EndUnLock,[LockedFile.Name]);
          finally
            FileClose(iTargetFile);
          end;
        end else
        begin
          inc(CheckTimes);
          Label_Msg.Caption:=Format(Error_PassWrong,[4-CheckTimes]);
        end;
      end else Label_Msg.Caption:=Format(Error_FileNotLocked,[ExtractFileName(FsName)]);
    finally
      FileClose(iSourceFile);
    end;
    if Successed then
    begin
      DeleteFile(FsName);
      RenameFile(FtName,FsName);
    end;
    Sleep(1000);
    CheckOpFile(Edit_FileName.Text);
  end;
end;

procedure TForm1.Button_GoClick(Sender: TObject);
var
  hThread:Thandle;
  ThreadID:DWord;
begin
  if not FileExists(Edit_FileName.Text) then
  begin
    Label_Msg.Caption:=Error_FileNotExists;
    exit;
  end;
  if Edit_Pass.Text='' then
  begin
    Label_Msg.Caption:=Error_NoPass;
    exit;
  end;
  if Edit_Pass.Text<>Edit_Pass1.Text then
  begin
    Label_Msg.Caption:=Error_PassNotSame;
    exit;
  end;

  hThread:=CreateThread(nil,0,@LockFile,nil,0,ThreadID);
  if hThread=0 then Label_Msg.Caption:=Error_Thread;
end;

procedure TForm1.Button_ExitClick(Sender: TObject);
begin
  Close;
end;

procedure TForm1.Button_OpenFileClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Edit_FileName.Text:=OpenDialog1.FileName;
    CheckOpFile(Edit_FileName.Text);
  end;
end;

procedure TForm1.Button_AboutClick(Sender: TObject);
begin
  Application.CreateForm(Tfrm_about, frm_about);
  frm_about.ShowModal;
end;

procedure TForm1.Button_UnGoClick(Sender: TObject);
var
  hThread:THandle;
  ThreadID:DWord;
begin
  if not FileExists(Edit_FileName.Text) then
  begin
    Label_Msg.Caption:=Error_FileNotExists;
    exit;
  end;
  if Edit_Pass.Text='' then
  begin
    Label_Msg.Caption:=Error_NoPass;
    exit;
  end;
  if CheckTimes>=3 then
  begin
    Close;
  end else
  begin
    hThread:=CreateThread(nil,0,@UnLockFile,nil,0,ThreadID);
    if hThread=0 then Label_Msg.Caption:=Error_Thread;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  { enable dragfile }
  DragAcceptFiles(Handle, True);

  CheckTimes:=1;
end;

procedure TForm1.Button_DirectoryClick(Sender: TObject);
var
  SDirectory:String;
begin
  if not FileExists(Edit_FileName.Text) then
  begin
    Label_Msg.Caption:=Error_FileNotExists;
    exit;
  end;
  SDirectory:=ExtractFilePath(Edit_FileName.Text);
  ShellExecute(Handle,nil,PChar(SDirectory),nil,nil,SW_SHOWNORMAL);
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if not Button_Exit.Enabled then CanClose:=False;
end;

procedure TForm1.DoLock;
var
  DoFileName:String;
begin
  DoFileName:=ExtractFileName(Edit_FileName.Text);
  Label_Msg.Caption:=Format(Msg_DoLock,[DoFileName]);
  Button_UnGo.Enabled:=False;
end;

procedure TForm1.DoUnLock;
var
  DoFileName:String;
begin
  DoFileName:=ExtractFileName(Edit_FileName.Text);
  Label_Msg.Caption:=Format(Msg_DoUnLock,[DoFileName]);
  Button_Go.Enabled:=False;
  Edit_Pass1.Enabled:=False;
  CheckBox_BackUp.Enabled:=False;
  StaticText_Pass1.Enabled:=False;
end;

procedure TForm1.CheckOpFile(FileName:String);
var
  iOpFile:Integer;
  GetFlag,Flag:String[7];
  LockedFile:record
    Name:ShortString;
    Size:Integer;
    PassWord:String[15];
    Encrypted:Boolean;
  end;
  FileExt:String;
  FileAttr:Integer;
begin
  ResetForm;
  Flag:='@@#%#@@';
  FileExt:=ExtractFileExt(FileName);
  if StrUpper(PChar(FileExt))<>'.EXE' then
  begin
    label_Msg.Caption:=Format(Error_FileType,[ExtractFileName(FileName)]);
    Sleep(1000);
  end;
  FileAttr:=FileGetAttr(FileName);
  if FileAttr and faReadOnly>0 then
  begin
    label_Msg.Caption:=Format(Error_FileAttribute,[ExtractFileName(FileName)]);
    Label_Msg.Hint:=Label_Msg.Caption;
    exit;
  end;
  try
    iOpFile:=FileOpen(FileName,fmOpenRead);
    FileSeek(iOpFile,-SizeOf(Flag),soFromEnd);
    FileRead(iOpFile,GetFlag,SizeOf(GetFlag));
    if GetFlag=Flag then
    begin
      DoUnLock;
    end else
    begin
      DoLock;
    end;
    Label_Msg.Hint:=Label_Msg.Caption;
  finally
    FileClose(iOpFile);
  end;
end;

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
  CFileName: array[0..MAX_PATH] of Char;
begin
  try
    if DragQueryFile(Msg.Drop,0,CFileName,MAX_PATH)>0 then
    begin
      Edit_FileName.Text:=CFileName;
      CheckOpFile(CFileName);
    end;
  finally
    DragFinish(Msg.Drop);
  end;
end;

procedure TForm1.Edit_FileNameChange(Sender: TObject);
begin
  Edit_FileName.Hint:=Edit_FileName.Text;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级韩国三级日本三斤 | 欧美性xxxxxxxx| eeuss影院一区二区三区| 国产成人日日夜夜| 大胆欧美人体老妇| 成人黄色777网| 99精品久久99久久久久| 色综合久久综合中文综合网| 99久久久久免费精品国产| zzijzzij亚洲日本少妇熟睡| 不卡av电影在线播放| 91在线视频播放地址| 91视频免费看| 在线观看91视频| 欧美精品三级在线观看| 91精品国产91热久久久做人人| 在线不卡a资源高清| 日韩欧美美女一区二区三区| 精品国产1区二区| 国产欧美一区二区在线| 国产精品久久99| 一区二区三区精品在线观看| 国产精品国产三级国产aⅴ入口| 一区二区在线观看不卡| 国产亚洲精品aa午夜观看| 欧美精品日韩一本| 日韩午夜精品电影| 日韩欧美久久一区| 久久久久久免费毛片精品| 国产欧美一区二区精品忘忧草 | 日本一二三不卡| 中文字幕在线不卡国产视频| 一级女性全黄久久生活片免费| 亚洲成人福利片| 极品美女销魂一区二区三区| 成人一区二区三区视频| 日本二三区不卡| 日韩三级中文字幕| 中文字幕一区二区三区视频| 亚洲成人av一区| 国产一区在线观看视频| 日本久久精品电影| 日韩无一区二区| 亚洲欧洲99久久| 欧美日韩色一区| 精品久久久影院| 一区二区三区在线免费播放| 日韩电影免费在线看| 成人一级视频在线观看| 欧美日韩在线亚洲一区蜜芽| 久久无码av三级| 亚洲高清不卡在线| 高清在线成人网| 欧美理论电影在线| 国产精品全国免费观看高清| 婷婷六月综合亚洲| www.成人网.com| 欧美成人精品二区三区99精品| 亚洲欧洲精品一区二区三区不卡| 免费不卡在线视频| 欧洲激情一区二区| 国产日产精品一区| 奇米影视一区二区三区小说| 成人av在线影院| 精品av久久707| 午夜电影一区二区三区| 成人免费的视频| 91精品1区2区| 国产婷婷色一区二区三区在线| 精品av久久707| 午夜在线成人av| 成人影视亚洲图片在线| 日韩午夜中文字幕| 亚洲最快最全在线视频| 中文字幕二三区不卡| 毛片基地黄久久久久久天堂| 在线观看视频一区二区欧美日韩| 国产欧美日韩三级| 精品中文字幕一区二区小辣椒| 欧美日韩一区不卡| 亚洲色图第一区| 成人a区在线观看| 久久久亚洲国产美女国产盗摄| 视频一区在线视频| 欧美日韩卡一卡二| 一区二区三区在线免费观看| jizz一区二区| 中文字幕一区二区三区四区 | 日韩欧美的一区二区| 午夜激情一区二区三区| 欧美在线短视频| 亚洲老司机在线| 91美女在线看| 亚洲你懂的在线视频| 99国产精品国产精品久久| 91视频国产资源| 日韩av不卡一区二区| 成人毛片在线观看| 欧美日韩一级黄| 一区二区欧美视频| 日本韩国欧美在线| 亚洲免费色视频| 91首页免费视频| 亚洲欧洲性图库| 色综合亚洲欧洲| 一区二区三区不卡视频在线观看| 99久久99久久精品免费看蜜桃| 国产欧美日韩在线视频| 懂色av一区二区夜夜嗨| 亚洲精品一线二线三线| 韩国一区二区三区| 久久久久久一级片| 成人午夜激情视频| 中文字幕一区二区三区精华液| 91丨porny丨户外露出| 亚洲美女电影在线| 欧美日韩午夜在线| 久久成人免费网| 中文字幕国产一区二区| 91猫先生在线| 午夜影视日本亚洲欧洲精品| 91麻豆精品国产91久久久| 久久国产精品第一页| 久久无码av三级| 99久久精品费精品国产一区二区| 一区二区三区精品| 91精品国产欧美一区二区成人| 中文字幕不卡三区| 国产精品久久久久久久久搜平片 | caoporm超碰国产精品| 成人免费一区二区三区视频| 色婷婷综合久久久中文一区二区| 一级日本不卡的影视| 欧美一级日韩一级| 国产成人av一区| 一区二区三区不卡在线观看| 欧美一区二区精美| 粉嫩一区二区三区性色av| 一区二区三区蜜桃| 精品三级av在线| 91影视在线播放| 日韩中文字幕一区二区三区| 2欧美一区二区三区在线观看视频| 成人国产精品免费观看视频| 亚洲大型综合色站| 久久久www免费人成精品| 91蝌蚪国产九色| 久久国产剧场电影| 亚洲精品乱码久久久久久| 精品欧美一区二区在线观看| 99re视频精品| 久久爱另类一区二区小说| 中文字幕永久在线不卡| 91精品国产综合久久精品图片 | 欧美zozo另类异族| 91麻豆精品在线观看| 中文久久乱码一区二区| 日本女人一区二区三区| 久久午夜老司机| 成人性生交大片免费| 亚洲电影一区二区| 中文字幕国产一区二区| 777午夜精品免费视频| 成+人+亚洲+综合天堂| 青青草伊人久久| 亚洲精品国产精品乱码不99| 久久综合狠狠综合| 欧美日韩国产一级片| 成人av在线电影| 久久99精品国产麻豆婷婷洗澡| 亚洲人成电影网站色mp4| 精品日韩在线一区| 欧美日韩一区不卡| 99久久国产综合色|国产精品| 久久电影网电视剧免费观看| 亚洲成人av在线电影| 亚洲视频在线一区| 国产欧美视频一区二区| 精品美女一区二区| 欧美久久一二三四区| 色综合久久久久综合99| 国产成人在线视频网站| 久久精品国产免费| 三级精品在线观看| 亚洲午夜在线视频| 一区二区三区四区国产精品| 国产精品网站在线| 久久九九影视网| 精品国产乱码久久久久久蜜臀| 欧美日产国产精品| 欧美日韩综合在线| 欧美午夜精品理论片a级按摩| 国产一区不卡精品| 国产精品网友自拍| 在线精品视频小说1| 一区二区三区日韩在线观看| 精品国产乱码久久久久久久久| 欧美日韩亚洲综合一区| 91麻豆精品在线观看| 99国产精品久久久久久久久久|