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

📄 sample10u.pas

📁 用来测试任何pcsc兼容读卡器
💻 PAS
字号:
unit sample10u;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, APDUCard, PCSCclasses, Menus,ShellAPI, VASBase;

type
  TForm1 = class(TForm)
    ResourceManager1: TResourceManager;
    card: TAPDUCard;
    MainMenu1: TMainMenu;
    Exit1: TMenuItem;
    Reader1: TMenuItem;
    buClone: TButton;
    laState: TLabel;
    buBeginTransaction: TButton;
    buEndTransaction: TButton;
    memo: TClearMemo;
    procedure cardCardAbsent(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure Reader1Click(Sender: TObject);
    procedure cardCardSwallowed(Sender: TObject);
    procedure cardConnected(Sender: TObject);
    procedure cardDisconnected(Sender: TObject);
    procedure buCloneClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure buBeginTransactionClick(Sender: TObject);
    procedure buEndTransactionClick(Sender: TObject);
    procedure cardBeginTransaction(Sender: TObject);
    procedure cardEndTransaction(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

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

procedure TForm1.Reader1Click(Sender: TObject);
begin
 card.selectreader(nil);
 caption:='Sample 10 - '+card.readername;
 if card.readername<>'' then
  card.Connect(smShared,prDefault);
end;

procedure TForm1.cardConnected(Sender: TObject);
begin
 if card.reader.CurrentShareMode = smExclusive then
  laState.caption:='Connected in exclusive mode'
 else
  laState.caption:='Connected in shared mode';
 buBeginTransaction.enabled:=true;
 buEndTransaction.enabled:=true;
end;

procedure TForm1.cardDisconnected(Sender: TObject);
begin
 laState.caption:='Not connected';
 buBeginTransaction.enabled:=false;
 buEndTransaction.enabled:=false;
end;

procedure TForm1.cardCardAbsent(Sender: TObject);
begin
 Memo.Lines.Add('A card was removed from reader '+card.Readername+'.');
end;

procedure TForm1.cardCardSwallowed(Sender: TObject);
begin
 if card.Atr.Length>0 then
  Memo.Lines.Add('A card was inserted into reader '+card.Readername+'.'#13#10'ATR:'+card.Atr.Hex)
 else
  Memo.Lines.Add('A card was inserted into reader '+card.Readername+'.'#13#10'No ATR')
end;

procedure TForm1.buCloneClick(Sender: TObject);
var
 filename:array[0..MAX_PATH] of char;
begin
 GetModuleFileName(0,filename,sizeof(filename));
 ShellExecute(handle,'OPEN',filename,pchar('"'+card.readername+'" '+inttostr(1+strtointdef(paramstr(2),1))),nil,SW_SHOW);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 card.readername:=paramstr(1);
 if card.readername<>'' then
 begin
  caption:='Sample 10 - '+card.readername;
  card.Connect(smShared,prDefault);
  if paramstr(2)<>'' then
   SetBounds(left+(width div 3)*strtointdef(paramstr(2),0),top,width,height);
 end;
end;

procedure TForm1.buBeginTransactionClick(Sender: TObject);
begin
 Memo.Lines.Add('Waiting for transaction...');
 laState.Update;
 card.BeginTransaction;
end;

procedure TForm1.buEndTransactionClick(Sender: TObject);
begin
 Memo.Lines.Add('Ordering end of transaction...');
 laState.Update;
 card.EndTransaction(diLeave);
end;

procedure TForm1.cardBeginTransaction(Sender: TObject);
begin
 Memo.Lines.Add('Transaction - card reserved');
end;

procedure TForm1.cardEndTransaction(Sender: TObject);
begin
 Memo.Lines.Add('Transaction finished - card released');
end;

end.

⌨️ 快捷键说明

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