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