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

📄 unit4.pas

📁 基于delphi的门禁考勤系统
💻 PAS
字号:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls, ToolWin, DB, ADODB, ComObj, ActiveX,
  DateUtils, IniFiles, ScktComp, StrUtils, Unit5, Registry, Menus, ShellApi;

const
  WM_BARICON=WM_USER+200;

type
  TForm4 = class(TForm)
    cmdStartService: TButton;
    cmdStopService: TButton;
    cmdedit: TButton;
    cmdclear: TButton;
    cmdexit: TButton;
    StatusBar1: TStatusBar;
    Memo1: TMemo;
    Memo2: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    procedure cmdclearClick(Sender: TObject);
    procedure cmdeditClick(Sender: TObject);
    procedure cmdStartServiceClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure cmdexitClick(Sender: TObject);
    procedure cmdStopServiceClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    function CheckRey: boolean;
    procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
    procedure WMBarIcon(var Message:TMessage);message WM_BARICON;
  public
  end;
var
  Form4: TForm4;
  IniFile: TIniFile;
  ISWork,ISOK,querybool: boolean;

implementation

uses Unit2, GatherRecThread, QuerySendThread, Unit1, Unit3;

{$R *.dfm}

var
  GatherThread: TGatherRecThread;
  QuerySend: TQuerySendThread;
  MainIcon: Integer = 1;

procedure TForm4.cmdclearClick(Sender: TObject);
begin
  Form4.Memo1.Clear;
  Form4.Memo2.Clear;
end;

function TForm4.CheckRey: boolean;
var
  Reg: TRegistry;
begin
  Result := False;
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('SOFTWARE', False);
  Reg.CreateKey('SSIM');
  Reg.OpenKey('SSIM', False);

  if Reg.ValueExists('SN') then
  begin
    if Reg.ReadString('SN') = Algorithm(Trim(GetIdeSerialNumber)) then
      Result := True
  end else begin
    Result := False;
    Reg.WriteString('SN', '');   //写入这个注册表的这个键值
  end;
  Reg.Free;
end;

procedure TForm4.cmdeditClick(Sender: TObject);
begin
  self.Hide;
  Form2.Show;
end;

procedure TForm4.cmdexitClick(Sender: TObject);
begin
  Close;
end;

procedure TForm4.cmdStartServiceClick(Sender: TObject);   //启动服务
begin
  cmdStartService.Enabled := false;
  cmdStopService.Enabled := true;

  if GatherThread = nil then       //创建采集的线程  从设备里面读数据
  begin
    GatherThread := TGatherRecThread.Create(True);
    GatherThread.Resume;
  end;

  if QuerySend = nil then       //发送记录到服务器
  begin
    QuerySend := TQuerySendThread.Create(True);
    QuerySend.Resume;
  end;

  ISOK := true;             //控制线程是否执行

end;

procedure TForm4.cmdStopServiceClick(Sender: TObject);    //停止服务
begin
  ISOK := False;
  self.cmdStartService.Enabled := true;
  self.cmdStopService.Enabled := false;
end;

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  IniFile.Free;
end;

procedure TForm4.FormCreate(Sender: TObject);
var
  fn : string;
begin
  fn := ExtractFilePath(Paramstr(0));
  IniFile := TIniFile.Create(fn + 'values.ini');
  querybool := True;
end;

procedure TForm4.FormShow(Sender: TObject);
var
  fn: string;
//  Reg: TRegistry;
begin
  if not CheckRey then
  begin
    Form3.ShowModal;
    //exit;
  end;

  fn := ExtractFilePath(Paramstr(0));
  fn := fn + 'values.ini';
  if not FileExists(fn) then
  begin
    if CheckRey then
      ShowMessage('恭喜!您注册成功!下面请对配置文件进行设置!')
    else
      showmessage('安装目录没有找到配置文件,请您先对配置文件进行设置!');
    Form2.Show;
    exit;
  end;

//  Reg := TRegistry.Create;
//  try
//  begin
//    Reg.RootKey := HKEY_LOCAL_MACHINE;
//    Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', False);
//    if Reg.ValueExists('Catcher') then
//    begin
//      if Reg.ReadString('Catcher') = Paramstr(0) then begin
//        ShellExecute(nil,'open',PChar(Paramstr(0)),nil,nil,SW_SHOW);
//      end;
          if inifile.ReadString('autostart', 'value', '') = 'T' then
            self.cmdStartService.Click ;
//        else
//          close;
//    end;
//  end;
//  finally
//    Reg.CloseKey;
//    Reg.Free;
//  end;
end;

procedure TForm4.WMBarIcon(var Message: TMessage);
var
  lpData:PNotifyIconData;
begin
 if (Message.LParam = WM_LBUTTONDOWN) then  //如果用户点击任务栏图标则将图标删除并回复窗口。
 begin    
  lpData := new(PNotifyIconDataA);
  lpData.cbSize := 88;                //SizeOf(PNotifyIconDataA);
  lpData.Wnd := Form4.Handle;
  lpData.hIcon := Application.Icon.Handle;
  lpData.uCallbackMessage := WM_BARICON;
  lpData.uID :=0;
  lpData.szTip := '智能卡数据采集客户端(3.1)';
  lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
  Shell_NotifyIcon(NIM_DELETE,lpData);
  dispose(lpData);
  Form4.Visible := True;
 end;
end;

procedure TForm4.WMSysCommand(var Message: TMessage);
var
  lpData:PNotifyIconData;
begin
  if Message.WParam = SC_ICON then  //如果用户最小化窗口则将窗口  隐藏并在任务栏上添加图标
  begin
  
    lpData := new(PNotifyIconDataA);
    lpData.cbSize := 88;
    lpData.Wnd := Form4.Handle;
    lpData.hIcon := Application.Icon.Handle;
    lpData.uCallbackMessage := WM_BARICON;
    lpData.uID :=0;
    lpData.szTip := '智能卡数据采集客户端(3.1)';
    lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
    Shell_NotifyIcon(NIM_ADD,lpData);
    dispose(lpData);
    Form4.Visible := False;
  end
 else begin  //如果是其它的SystemCommand 消息则调用系统缺省处理函数处理之。
  DefWindowProc(Form4.Handle,Message.Msg,Message.WParam,Message.LParam);
 end;
end;

end.

⌨️ 快捷键说明

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