📄 sample9u.pas
字号:
unit sample9u;
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;
buConnectShared: TButton;
buConnectExclusive: TButton;
buClone: TButton;
buDisconnect: TButton;
laState: TLabel;
CheckBox1: TCheckBox;
ClearMemo1: TClearMemo;
procedure cardCardAbsent(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Reader1Click(Sender: TObject);
procedure cardCardSwallowed(Sender: TObject);
procedure buConnectSharedClick(Sender: TObject);
procedure cardConnected(Sender: TObject);
procedure cardDisconnected(Sender: TObject);
procedure buConnectExclusiveClick(Sender: TObject);
procedure buCloneClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure buDisconnectClick(Sender: TObject);
procedure cardReaderNameChange(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
private
public
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 9 - '+card.readername;
end;
procedure TForm1.buConnectSharedClick(Sender: TObject);
begin
card.Connect(smShared,prDefault);
end;
procedure TForm1.buConnectExclusiveClick(Sender: TObject);
begin
card.Connect(smExclusive,prDefault);
end;
procedure TForm1.cardConnected(Sender: TObject);
var
s:string;
begin
if card.reader.CurrentShareMode = smExclusive then
s:='Connected in exclusive mode'
else
s:='Connected in shared mode';
laState.caption:=s;
clearmemo1.lines.add(s);
end;
procedure TForm1.cardDisconnected(Sender: TObject);
begin
laState.caption:='Not connected';
clearmemo1.lines.add('Disconnected');
end;
procedure TForm1.cardCardAbsent(Sender: TObject);
begin
clearmemo1.lines.add('A card was removed from reader '+card.Readername+'.');
end;
procedure TForm1.cardCardSwallowed(Sender: TObject);
begin
if card.Atr.Length>0 then
clearmemo1.lines.add('A card was inserted into reader '+card.Readername+'.ATR:'+card.Atr.Hex)
else
clearmemo1.lines.add('A card was inserted into reader '+card.Readername+'.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+'"'),nil,SW_SHOW);
SetBounds(left+width+10,top,width,height);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
card.readername:=paramstr(1);
if card.readername<>'' then
caption:='Sample 9 - '+card.readername;
checkbox1.checked:=card.autoreset;
end;
procedure TForm1.buDisconnectClick(Sender: TObject);
begin
card.Disconnect(diLeave);
end;
procedure TForm1.cardReaderNameChange(Sender: TObject);
begin
clearmemo1.lines.add('Readername set to '+card.readername);
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
card.autoreset:=checkbox1.checked;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -