[VB.NET] Toetsaanslag herleiden naar input device

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • basovic88
  • Registratie: December 2007
  • Niet online
Goede middag,

Is het mogelijk om een toetsaanslag te herleiden naar het invoerapparaat dat deze verstuurd heeft?

Ik wil namelijk alleen bepaalde acties uitvoeren indien een toetsaanslag afkomstig is van de barcode scanner (de barcode scanner verstuurd de ingelezen barcode door als een reeks toetsaanslagen).

Op het moment heb ik dit:
  • Met behulp van de reference System.Management kan ik de ID's van al mijn invoerapparaten (toetsenbord, muis, wacom en barcode scanner) opvragen.
  • Met behulp van een low level keypress event class kan ik alle toetsaanslagen en muisclicken binnen Windows opvangen.
Echter, ik krijg het niet voor elkaar het zogenaamde Device ID te koppelen aan een toetsaanslag, om vervolgens een onderscheid te maken tussen toetsaanslagen van het toetsenbord en toetsaanslagen van de barcode scanner.

Enkele ideeën die ikzelf heb:
  • Ik kan wel een toetsaanslag koppelen aan het Actieve process in Windows. Dus bijvoorbeeld A - Google Chrome, B - Patience, C - Excel etc. Maar dit is gedaan m.b.v. de Windows API, hiervoor was geen standaard iets beschikbaar in VB.NET. Bestaat er iets in de Windows API waarmee ik kan communiceren in VB.NET dat mij het active invoerapparaat teruggeeft?
  • Timen hoeveel seconden tussen toetsaanslagen zit. Als deze nagenoeg 0 is, dan is het zeer waarschijnlijk dat deze aanslagen afkomstig zijn van een barcodescanner. Maar dit heeft een beetje ducktape gehalte, zeg maar.
Als iemand een betere oplossing heeft, of weet hoe ik mijn idee verwezenlijkt kan worden, laat het weten!

Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
Voor verschillende muizen kun je misschien de multipoint sdk gebruiken. Voor keyboards moet je volgens mij met Raw Input werken, maar of dat makkelijk in .Net aan de praat te krijgen is...

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Kan je die barcode scanners niet zo instellen dat ze een vooraf ingestelde code als start / stop meegeven? Dus gewoon alles prependen met 999999 en dan reageert je app pas, daarna alles stoppen 666666 ( als je control codes kan instellen wordt het helemaal makkelijk )

Heb je nog een mogelijkheid dat iemand tussendoor iets invoert maar bij meeste barcodes heb je checkdigits waarop je wel / niet de input kan accepteren.
Als de doorvoer inderdaad nagenoeg 0 is ( in mijn ervaring is het een heel stuk langer, maar ok ) dan lijkt me dit een redelijke usererror opvangende oplossing, hij is niet hufterproof.

Acties:
  • 0 Henk 'm!

  • basovic88
  • Registratie: December 2007
  • Niet online
Ja, ik heb juist voor deze oplossing gekozen omdat de die-hard oplossingen erg moeilijk worden in VB.NET. Volgens mij is dat meer iets voor C++, iets dat ik niet beheers.

Rechtstreeks communiceren met de USB poort zou ook een optie kunnen zijn m.b.v. C# en usblib.dll.

Vooralsnog ben ik op zoek naar een mogelijkheid om een toetsaanslag te koppelen aan een device ID.