
Publié le 14/03/2006 Dans Programmation Par zion
On code!
Importons donc la description de cet ActiveX dans Delphi, pour cela rien de plus simple, Component/Import ActiveX Control, et il faut chercher la librairie EIDLibCtrl.
Une fois importée, nous avons une unité avec toutes les fonctions nécessaires pour accéder à la carte d'identité, y compris le support du lecteur SmartCard. Cela semble donc un jeu d'enfant.
- TEIDlib = class(TOleControl)
- private
- FIntf: IEIDlib;
- function GetControlInterface: IEIDlib;
- protected
- procedure CreateControl;
- procedure InitControlData; override;
- public
- function Init(const strReaderName: WideString; lOCSP: Integer; lCRL: Integer;
- out plHandle: Integer): IRetStatus;
- function Exit: IRetStatus;
- function GetID(out ppMapCollection: IMapCollection; out ppCertifCheck: ICertifCheck): IRetStatus;
- function GetAddress(out ppMapCollection: IMapCollection; out ppCertifCheck: ICertifCheck): IRetStatus;
- function GetPicture(out ppMapCollection: IMapCollection; out ppCertifCheck: ICertifCheck): IRetStatus;
- function GetVersionInfo(bSignature: Integer; out ppMapCollection: IMapCollection;
- out pvtSignature: OleVariant): IRetStatus;
- function BeginTransaction: IRetStatus;
- function EndTransaction: IRetStatus;
- function FlushCache: IRetStatus;
- function SelectApplication(vtApplication: OleVariant): IRetStatus;
- function SendAPDU(vtCommand: OleVariant; const pPIN: IPin; out pvtResponse: OleVariant): IRetStatus;
- function VerifyPIN(const pPIN: IPin; const bstrPin: WideString; out plTriesLeft: Integer): IRetStatus;
- function ChangePin(const pPIN: IPin; const strOldPin: WideString; const strNewPin: WideString;
- out plTriesLeft: Integer): IRetStatus;
- function GetPinStatus(const pPIN: IPin; bSignature: Integer; out pvtSignature: OleVariant;
- out plTriesLeft: Integer): IRetStatus;
- function ReadFile(const pPIN: IPin; vtFileId: OleVariant; out pvtData: OleVariant): IRetStatus;
- function WriteFile(const pPIN: IPin; vtFileId: OleVariant; vtData: OleVariant): IRetStatus;
- function SetRawData(const pRaw: IRaw): IRetStatus;
- function GetRawData(out ppRaw: IRaw): IRetStatus;
- property ControlInterface: IEIDlib read GetControlInterface;
- property DefaultInterface: IEIDlib read GetControlInterface;
- published
- property Anchors;
- end;
La documentation étant assez complète, on nous explique qu'il suffit de faire un Init, puis un GetID pour avoir les informations contenues sur la carte. Qu'il en soit donc ainsi:
- procedure TForm1.FormCreate(Sender: TObject);
- var
- lHandler: Integer;
- begin
- FEID := TEIDlib.Create(self);
- FEID.Init('', 0, 0, lHandler);
- end;
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- FEID.Exit;
- FreeAndNil(FEID);
- end;
Pour pouvoir compiler facilement le projet sans devoir installer le composant, le TEIDLib est créé à la volée, rien de très complexe en soit. Vu qu'un Init doit être terminé par un Exit, il suffit de rajouter un Exit dans le Destroy du form et le tour est joué.
































Précédent 

*tousse*
Se connecter
Inscription
Mot de passe perdu
Powered by 