Wenn Du unmittelbar hintereinander "shift loslassen", "Taste drücken", "Taste loslassen", "shift loslassen" schickst, sollte eigentlich nichts unerwümschtes passieren.
Es gibt übrigens die Funktion "sendinput", mit der eine Reihe von Tastatutereignissen mit einem einzigen
API-Aufruf in die Messagequeue gestellt werden können, die sollten dann wirklich in jedem Fall unmittelbar hintereinander in der Queue stehen.
Nebenbei: Wäre statt
Delphi-Quellcode:
Case StrToInt(akey) of
0: Result:= 48;
1: Result:= 49;
2: Result:= 50;
3: Result:= 51;
4: Result:= 52;
5: Result:= 53;
6: Result:= 54;
7: Result:= 55;
8: Result:= 56;
9: Result:= 57;
End;
nicht einfacher
Result := StrToInt (akey) + 48;