Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(Excel) PC/SC Find Inserted Smart CardsSee more SCard ExamplesGet detailed information about each reader including whether or not a smart card is currently inserted in the reader. (Also includes USB tokens.) Note: This functionality was introduced in Chilkat v9.5.0.87.
' This example requires the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. Dim scard As Chilkat.SCard Set scard = Chilkat.NewSCard ' First establish a context to the PC/SC Resource Manager success = scard.EstablishContext("user") If (success = False) Then Debug.Print scard.LastErrorText Exit Sub End If ' Get JSON containing information about the smartcards currently inserted into readers. ' This also includes information about USB security tokens. Dim json As Chilkat.JsonObject Set json = Chilkat.NewJsonObject success = scard.FindSmartcards(json) If (success = False) Then Debug.Print scard.LastErrorText Exit Sub End If json.EmitCompact = False Debug.Print json.Emit() ' Here is sample output: ' See below for sample code to parse the JSON. ' You can see which readers have a card inserted by the "state". ' If the state contains "present", then a card is inserted into the reader. ' (USB tokens will typically always have a state containing "present") ' Also, the ATR of the card inserted into the reader is indicated by "atr". ' { ' "reader": [ ' { ' "name": "Alcor Micro USB Smart Card Reader 0", ' "state": "present,inuse", ' "vendorName": "Alcor Micro", ' "systemName": "Alcor Micro USB Smart Card Reader 0", ' "card": { ' "atr": "3B7F96000080318065B0855956FB120FFE829000", ' "windows": { ' "miniDriver": "AxaltoCM.dll", ' "cryptoProvider": "Microsoft Base Smart Card Crypto Provider", ' "keyStorageProvider": "Microsoft Smart Card Key Storage Provider" ' } ' } ' }, ' { ' "name": "FS USB Token 0", ' "state": "present,inuse", ' "vendorName": "FS", ' "serialNumber": "3F", ' "systemName": "FS USB Token 0", ' "card": { ' "atr": "3B9F958131FE9F006646530534002571DF000000000012", ' "windows": { ' "miniDriver": "eps2003csp11", ' "cryptoProvider": "Microsoft Base Smart Card Crypto Provider", ' "keyStorageProvider": "Microsoft Smart Card Key Storage Provider" ' } ' } ' }, ' { ' "name": "FT Java Token 0", ' "state": "present", ' "vendorName": "FT", ' "serialNumber": "3F", ' "systemName": "FT Java Token 0", ' "card": { ' "atr": "3BFC180000813180459067464A00642D70C172FEE0FE", ' "windows": { ' "miniDriver": "tagliov70px.dll", ' "cryptoProvider": "Microsoft Base Smart Card Crypto Provider", ' "keyStorageProvider": "Microsoft Smart Card Key Storage Provider" ' } ' } ' }, ' { ' "name": "SCM Microsystems Inc. SCR33x USB Smart Card Reader 0", ' "state": "present", ' "vendorName": "SCM Microsystems Inc.", ' "serialNumber": "333130303330", ' "systemName": "SCM Microsystems Inc. SCR33x USB Smart Card Reader 0", ' "card": { ' "atr": "3BFC180000813180459067464A00641606F2727E00E0", ' "windows": { ' "miniDriver": "tagliov70px.dll", ' "cryptoProvider": "Microsoft Base Smart Card Crypto Provider", ' "keyStorageProvider": "Microsoft Smart Card Key Storage Provider" ' } ' } ' }, ' { ' "name": "Yubico YubiKey OTP+FIDO+CCID 0", ' "state": "present", ' "vendorName": "Yubico", ' "serialNumber": "3F", ' "systemName": "Yubico YubiKey OTP+FIDO+CCID 0", ' "card": { ' "atr": "3BFD1300008131FE158073C021C057597562694B657940", ' "windows": { ' "miniDriver": "msclmd.dll", ' "cryptoProvider": "Microsoft Base Smart Card Crypto Provider", ' "keyStorageProvider": "Microsoft Smart Card Key Storage Provider" ' } ' } ' } ' ] ' } ' Use this online tool to generate parsing code from sample JSON: ' Generate Parsing Code from JSON i = 0 count_i = json.SizeOfArray("reader") Do While i < count_i json.I = i name = json.StringOf("reader[i].name") state = json.StringOf("reader[i].state") vendorName = json.StringOf("reader[i].vendorName") systemName = json.StringOf("reader[i].systemName") cardAtr = json.StringOf("reader[i].card.atr") cardWindowsMiniDriver = json.StringOf("reader[i].card.windows.miniDriver") cardWindowsCryptoProvider = json.StringOf("reader[i].card.windows.cryptoProvider") cardWindowsKeyStorageProvider = json.StringOf("reader[i].card.windows.keyStorageProvider") serialNumber = json.StringOf("reader[i].serialNumber") i = i + 1 Loop ' Applications should always release the context when finished. success = scard.ReleaseContext() If (success = False) Then Debug.Print scard.LastErrorText End If |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.