I work for a software company that developed a biometric solution that allows customers to integrate biometric identification into any software package (by matching the fingerprint to a unique user id number). It acts as a keyboard wedge, so essentially, if someone places their finger on the biometric device and a match is found, that person's user id will be entered into the field.
We have a potential customer that uses an application hosted through a Citrix client (v6.20.984). If the keyboard is used to type in the number, everything works fine ... the number appears in the application as it should. If the user places their finger on the biometric reader, and a match is found, nothing happens. Our application shows that they identified successfully, but the id never gets passed through Citrix to the application. To keep our system completely independent from any application it may be used with, we just fill the keyboard buffer. I attached a snippet below demonstrating how we're going about this. Keep in mind, we do our development using Borland C++ .... hopefully the snippet will make sense though to those that don't live in Borland land.
Does anybody have ANY idea why the Citrix client is looking at the data from the keyboard buffer differently when entered via the keyboard versus our software which just simulates each keystroke through code?!?!?
keyed_event(keychar, 0, 0, 0); //key down
keyed_event(keychar, 0, KEYEVENTF_KEYUP, 0); //key up