📄 unit4.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 + -