⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 文件加密压缩解压缩系统
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ComCtrls, Menus, ExtCtrls, StdCtrls,inifiles, ShellApi,
  ToolWin, CheckLst, ShellCtrls,Registry;

type
  PFileSy = ^TFileSy;
  TFileSy=Record
    ChsName: string[200];
    Exefile: string[200];
    AClass: string[200];
    ImageIndex: ShortInt;
    Info: STRING[255];
    LinkText: string[200];
  end;
  TForm1 = class(TForm)
    picbox: TImageList;
    Panel1: TPanel;
    SB: TStatusBar;
    ScrollBox1: TScrollBox;
    ImageList1: TImageList;
    ImageList2: TImageList;
    ImageList3: TImageList;
    Panel2: TPanel;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    Panel3: TPanel;
    Bevel1: TBevel;
    Panel4: TPanel;
    Bevel2: TBevel;
    Image1: TImage;
    PopupMenu1: TPopupMenu;
    O2: TMenuItem;
    N7: TMenuItem;
    R2: TMenuItem;
    N9: TMenuItem;
    N6: TMenuItem;
    N10: TMenuItem;
    ShellListView1: TShellListView;
    ShellTreeView1: TShellTreeView;
    D2: TMenuItem;
    T1: TMenuItem;

   procedure PopupMenu1Popup(Sender: TObject);
    procedure exitClick(Sender: TObject);
     procedure ProductClick(Sender: TObject);
    procedure httpwwwjxspringcommainasp1Click(Sender: TObject);
    procedure httpwwwjxspringcombbscom1Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure R2Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure O2Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure D2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);

    procedure ShellListView1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure T1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ShellListView1Click(Sender: TObject);
  private

  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  APath,
  AInifile,
  ADatfile: string;
  AClass: TStrings;
  cClass: string;
  i:integer; //file number
  name:string;//path

implementation

uses ZLib;

{$R *.dfm}
(*//
标题:流的压缩和解压
说明:适用文件压缩、图象压缩等;调用ZLib单元的方法实现
设计:luochunlin
支持:13888985407
日期:2004-03-24
//*)

(*//============================================================================
设计思路:
创建TCompressionStream、TDecompressionStream实例进行压缩和解压
============================================================================//*)

const cBufferSize = $4096;

function StreamCompression(mInputStream: TStream; mOutputStream: TStream): Integer;
var
  I: Integer;
  vBuffer: array[0..cBufferSize]of Char;
begin
  Result := -1;
  if not (Assigned(mInputStream) and Assigned(mOutputStream)) then Exit;
  with TCompressionStream.Create(clMax, mOutputStream) do try
    for I := 1 to mInputStream.Size div cBufferSize do begin
      mInputStream.Read(vBuffer, cBufferSize);
      Write(vBuffer, cBufferSize);
    end;
    I := mInputStream.Size mod cBufferSize;
    if I > 0 then begin
      mInputStream.Read(vBuffer, I);
      Write(vBuffer, I);
    end;
  finally
    Free;
  end;
end;

function StreamDecompression(mInputStream: TStream; mOutputStream: TStream): Integer;
var
  vBuffer: array[0..cBufferSize]of Char;
  I: Integer;
begin
  Result := -1;
  if not (Assigned(mInputStream) and Assigned(mOutputStream)) then Exit;
  with TDecompressionStream.Create(mInputStream) do try
    repeat
      I := Read(vBuffer, cBufferSize);
      mOutputStream.Write(vBuffer, I);
    until I = 0;
    Result := mOutputStream.Size;
  finally
    Free;
  end;
end;


procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
ShellListView1Click(Sender);
end;

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


procedure TForm1.ProductClick(Sender: TObject);
begin
  ShellAbout(Handle,'文件加密压缩解压缩系统-作者:罗春林',nil,Application.Icon.Handle);
end;

procedure TForm1.httpwwwjxspringcommainasp1Click(Sender: TObject);
begin
  ShellExecute(Handle,'open','mailto:tans@kmeb.net',nil,nil,sw_normal);
end;

procedure TForm1.httpwwwjxspringcombbscom1Click(Sender: TObject);
begin
  ShellExecute(Handle,'open','mailto:tans@kmeb.net',nil,nil,sw_normal);
end;

procedure TForm1.Image1Click(Sender: TObject);
begin
  ShellExecute(Handle,'open','mailto:tans@kmeb.net',nil,nil,sw_normal);
end;

procedure TForm1.R2Click(Sender: TObject);
begin
ShellListView1.Refresh;
end;

procedure TForm1.N6Click(Sender: TObject);
var
  vInputStream: TFileStream;
  vOutputStream: TFileStream;
begin
  vInputStream := TFileStream.Create(sb.Panels[2].Text, fmOpenRead);
  vOutputStream := TFileStream.Create(sb.Panels[2].Text+'.arm', fmCreate);
  try
    StreamCompression(vInputStream, vOutputStream);
  finally
    vInputStream.Free;
    vOutputStream.Free;
  end;
ShellListView1.Refresh;
end;

procedure TForm1.O2Click(Sender: TObject);
begin
   ShellExecute(Handle,'open',Pchar(sb.Panels[2].Text),nil,Pchar(ExtractFilePath(sb.Panels[2].Text)),sw_normal);
end;

procedure TForm1.N10Click(Sender: TObject);
var
  vInputStream: TFileStream;
  vOutputStream: TFileStream;
begin
  vInputStream := TFileStream.Create(sb.Panels[2].Text, fmOpenRead);
  vOutputStream := TFileStream.Create(Copy(sb.Panels[2].Text,0,length(sb.Panels[2].Text)-4), fmCreate);
  try
    StreamDecompression(vInputStream, vOutputStream);
  finally
    vInputStream.Free;
    vOutputStream.Free;
  end;
ShellListView1.Refresh;
end;

procedure TForm1.D2Click(Sender: TObject);
begin
deletefile(sb.Panels[2].Text);
ShellListView1.Refresh;
end;

procedure TForm1.ToolButton3Click(Sender: TObject);
begin
 ShellAbout(Handle,'文件加密压缩解压缩系统-作者:罗春林',nil,Application.Icon.Handle);
end;



procedure TForm1.ShellListView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
num:integer;
begin
i:=0;

for num:=0 to ShellListView1.Items.Count -1 do begin
  if ShellListView1.Items[num].Selected = true then
  begin
   if not ShellListView1.SelectedFolder.IsFolder then
        begin
         sb.Panels[2].Text :=ShellListView1.Folders[num].PathName;
         PopupMenu1.Items[0].Enabled :=true;
         PopupMenu1.Items[1].Enabled :=true;
         PopupMenu1.Items[3].Enabled :=true;
         PopupMenu1.Items[4].Enabled :=true;
         PopupMenu1.Items[5].Enabled :=true;
        end
   else
        begin
         PopupMenu1.Items[0].Enabled :=false;
         PopupMenu1.Items[1].Enabled :=false;
         PopupMenu1.Items[3].Enabled :=false;
         PopupMenu1.Items[4].Enabled :=false;
         PopupMenu1.Items[5].Enabled :=false;
        end;

     i:=i+1;
   end;
  end;

sb.Panels[1].Text := '选择了'+inttostr(i)+'项';

end;

procedure TForm1.T1Click(Sender: TObject);
const
  cMyExt = '.arm';
  cMyFileType = 'ArmyLife.exe';
var
  Reg:TRegistry;
begin
Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    Reg.OpenKey(cMyExt, True);
    Reg.WriteString('', cMyFileType);
    Reg.CloseKey;
    Reg.OpenKey(cMyFileType, True);
    Reg.WriteString('', 'ArmyLife File');
    Reg.CloseKey;
    Reg.OpenKey(cMyFileType + '\DefaultIcon', True);
    Reg.WriteString('', Application.ExeName + ',0');
    Reg.CloseKey;
    Reg.OpenKey(cMyFileType + '\Shell\Open', True);
    Reg.WriteString('', '&文件加密压缩解压缩(&A)');
    Reg.CloseKey;
    Reg.OpenKey(cMyFileType + '\Shell\Open\Command', True);
    Reg.WriteString('', '"' + Application.ExeName + '" "%1"');
    Reg.CloseKey;
    //SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
  finally
    Reg.Free;
    showmessage('.arm文件成功关联!');
  end;

end;

procedure TForm1.FormCreate(Sender: TObject);
var
filename:string;
begin
filename:=paramstr(1);//filename是txt文件双击后传给你的程序的文件名
if filename<>'' then  ShellListView1.Root:=ExtractFilePath(Paramstr(1));
end;

procedure TForm1.ShellListView1Click(Sender: TObject);
var
num:integer;
begin
i:=0;

for num:=0 to ShellListView1.Items.Count -1 do begin
  if ShellListView1.Items[num].Selected = true then
  begin
   if not ShellListView1.SelectedFolder.IsFolder then
        begin
         sb.Panels[2].Text :=ShellListView1.Folders[num].PathName;
         PopupMenu1.Items[0].Enabled :=true;
         PopupMenu1.Items[1].Enabled :=true;
         PopupMenu1.Items[3].Enabled :=true;
         PopupMenu1.Items[4].Enabled :=true;
         PopupMenu1.Items[5].Enabled :=true;
        end
   else
        begin
         PopupMenu1.Items[0].Enabled :=false;
         PopupMenu1.Items[1].Enabled :=false;
         PopupMenu1.Items[3].Enabled :=false;
         PopupMenu1.Items[4].Enabled :=false;
         PopupMenu1.Items[5].Enabled :=false;
        end;

     i:=i+1;
   end;
  end;

sb.Panels[1].Text := '选择了'+inttostr(i)+'项';

end;

end.

⌨️ 快捷键说明

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