Partager via


Utilisation de VBScript pour gérer des appareils (documentation du SDK POS pour .NET v1.14)

À l’aide de l’API WMI décrite dans cette section, il est possible de gérer des appareils à l’aide de code managé ou de scripts. POSDM.EXE est une interface de ligne de commande pour cette API. Cet exemple VBScript effectue les opérations suivantes :

  • Il utilise la méthode WMI ExecQuery pour récupérer une liste d’objets PosDevice installés. Avec cette liste d’objets de service, le script affiche leur type, leur nom, leur chemin d’accès correspondant et leur état activé ou désactivé. Cela est analogue à l’exécution de la commande suivante :

    PosDM.exe LISTDEVICES

  • Il tente ensuite d’attribuer le chemin COM1 à l’objet de service installé, Microsoft Msr Simulator à l’aide de la méthode AddDevice. Cela équivaut à exécuter :

    PosDM.exe ADDDEVICE COM1 /SONAME:Microsoft Msr Simulator

  • Si la méthode AddDevice échoue, le script intercepte l’erreur et suppose que COM1 a peut-être déjà été ajouté à l’appareil, et tente donc de le supprimer en appelant DeleteDevice. Cela équivaut à exécuter :

    PosDM.exe DELETEDEVICE COM1

  • Si la méthode AddDevice avait précédemment échoué, le script tente d’appeler à nouveau AddDevice. Le programme se ferme en cas d’échec de la méthode.

  • Enfin, l’exemple tente d’ajouter le nom logique MSRSim à cet objet de service en appelant AddName. Cela équivaut à exécuter :

    PosDM.exe ADDNAME MSRSim /SONAME:"Microsoft Msr Simulator"

Il est possible de voir les résultats de cet exemple en exécutant :

PosDM.exe LISTDEVICES

and

PosDM.exe LISTNAMES

Exécution de l'exemple

  1. L’objet service Microsoft Msr Simulator a été installé avec SDK. Assurez-vous qu’il est installé sur l’ordinateur que vous utiliserez pour exécuter l’exemple.

  2. Copiez ce script dans un fichier PosDMSample.vbs

  3. Exécutez le script avec la ligne de commande suivante :

    CScript //U PosDMSample.vbs

Exemple

'Get a handle to the POS namespace service into 'objServices'.
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objServices = objLocator.ConnectServer(, "/root/MicrosoftPointOfService")

'List the POS devices.
EnumeratePosDevice

'Add a name: MSRSim for Msr Simulator by retrieving the SO and invoking AddDevice() then AddName()
WScript.Echo "Add Device on COM1 and add name 'MSRSim' for MsrSimulator ..."
Set objSO = objServices.Get("ServiceObject.Type='Msr',Name='Microsoft Msr Simulator'")

On Error Resume Next
objSO.AddDevice "COM1"
if Err.number <> 0 Then
  WScript.Echo "AddDevice failed - it already is in use."
  WScript.Echo "Try to delete the device..."

  On Error Resume Next
  objSO.DeleteDevice "COM1"
  if Err.number <> 0 Then
    WScript.Echo "DeleteDevice failed"
    WScript.Quit 1
  end if

  WScript.Echo "DeleteDevice succeeded! Attempting AddDevice again..."

  On Error Resume Next
  objSO.AddDevice "COM1"
  if Err.number <> 0 Then
      WScript.Echo "AddDevice failed a second time - exiting"
      WScript.Quit 2
  end if
end if

Set objDevice = objServices.Get("PosDevice.SoName='Microsoft Msr Simulator',Type='Msr',Path='COM1'")
objDevice.AddName "MSRSim"
Set objDevice = GetDevice("Msr", "MSRSim")
WScript.Echo "Added 'MSRSim' to: " & objDevice.Type & vbTab & objDevice.SoName & vbTab & objDevice.Path

'Enumerate the sClass by name
Sub EnumeratePosDevice( )
  sClass = "PosDevice"
  WScript.Echo "Enumerating " & sClass & "..." & vbCrLf

  Set collection = objServices.ExecQuery("SELECT * From " & sClass)
  For Each obj In collection
    Enabled = "DISABLED"
    if obj.Enabled = true Then
      Enabled = "ENABLED"
    end If
      WScript.Echo obj.Type & Space(15-len(obj.type)) & obj.SoName & Space(35-len(obj.SoName)) & Enabled & vbTab & obj.Path
  Next
  WScript.Echo vbCrLf
End Sub

'Return a PosDevice matching DeviceType and Name.
Function GetDevice( DeviceType, Name )
  Set Logical = GetLogicalDevice( DeviceType, Name )
  objectPath = "PosDevice.SoName='" & Logical.SoName & "',Type='" & DeviceType & "',Path='" & Logical.Path & "'"
  Set GetDevice = objServices.Get(objectPath)
End Function

'Return a LogicalDevice matching DeviceType and Name.
Function GetLogicalDevice( DeviceType, Name )
  Query = "SELECT * From LogicalDevice WHERE Type = '" & DeviceType & "' AND Name='" & Name & "'"
  Set collection = objServices.ExecQuery( Query )
  For Each obj In collection
    Set GetLogicalDevice = obj
    exit For
  Next
End Function

Si le chemin COM1 n’a pas été affecté à un appareil, l’exemple produit une sortie similaire à ce code.

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Enumerating PosDevice...

Msr            Microsoft Msr Simulator            ENABLED
Msr            Microsoft Msr Simulator            ENABLED       COM1
Keylock        Microsoft Keylock Simulator        ENABLED
Scanner        Microsoft Scanner Simulator        ENABLED
CashDrawer     Microsoft CashDrawer Simulator     ENABLED
CheckScanner   Microsoft CheckScanner Simulator   ENABLED
LineDisplay    Microsoft LineDisplay Simulator    ENABLED
PinPad         Microsoft PinPad Simulator         ENABLED
PosPrinter     Microsoft PosPrinter Simulator     ENABLED
PosKeyboard    Microsoft PosKeyboard Simulator    ENABLED

Add Device on COM1 and add name 'MSRSim' for MsrSimulator ...
AddDevice failed - it already be in use.
Try to delete the device...
DeleteDevice succeeded! Attempting AddDevice again...
Added 'MSRSim' to: Msr  Microsoft Msr Simulator

Si le chemin COM1 est déjà utilisé et qu’aucune autre erreur ne se produit, le script génère une sortie qui ressemble à ce code.

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Enumerating PosDevice...

Msr            Microsoft Msr Simulator            ENABLED
Msr            Microsoft Msr Simulator            ENABLED       COM1
Keylock        Microsoft Keylock Simulator        ENABLED
Scanner        Microsoft Scanner Simulator        ENABLED
CashDrawer     Microsoft CashDrawer Simulator     ENABLED
CheckScanner   Microsoft CheckScanner Simulator   ENABLED
LineDisplay    Microsoft LineDisplay Simulator    ENABLED
PinPad         Microsoft PinPad Simulator         ENABLED
PosPrinter     Microsoft PosPrinter Simulator     ENABLED
PosKeyboard    Microsoft PosKeyboard Simulator    ENABLED

Add Device on COM1 and add name 'MSRSim' for MsrSimulator ...
AddDevice failed - it already be in use.
Try to delete the device...
DeleteDevice succeeded! Attempting AddDevice again...
Added 'MSRSim' to: Msr  Microsoft Msr Simulator

Voir aussi

Autres ressources