Seas,
zur Erklärung des Titels:
Ich möchte auf das Drücken von Steuerungstasten (Ctrl,Alt,Shift) reagieren. Mit "präzise" meine ich dass mein Programm unterscheiden muss (!) zwischen
LCtrl und RCtrl,LAlt und AltGR, LShift und RShift.
Der Zweck?
In einem Memo soll ein "Script" erstellt werden, dafür reagiere ich auf OnKeyDown und OnKeyUp.
Mit allen anderen Tasten klappt alles auch schon wunderbar, aber irgendwie verstehe ich nicht inwiefern ich diese Tasten anderweitig analysieren muss.
Ich hab mir mal einen Quelltext aus dem Internet gezogen und diesen modifiziert. Diese Funktion sollte eigentlich je nach Result werd zeigen welche Taste
gedrückt wurde bzw. jetzt nicht mehr (!) gedrückt ist.
Delphi-Quellcode:
function SetKeysGetChange:shortint;
var
b1,b2,b3:boolean;
begin
result:=0;
b1:= GetKeyState(16) and (-32768+128) <> 0;
b2:= GetKeyState(17) and (-32768+128) <> 0;
b3:= GetKeyState(18) and (-32768+128) <> 0;
if LShift <> (b1 and (GetKeyState(160) <> 0)) then
result:= C_LShift;
LShift := result = C_LShift;
if RShift <> (b1 and (GetKeyState(161)<> 0)) then
result:=C_RShift;
RShift := result = C_RShift;
if LCtrl <> (b2 and (GetKeyState(162)<> 0)) then
result:=C_LCtrl;
LCtrl := b2 and (GetKeyState(162)<> 0);
if RCtrl <> (b2 and (GetKeyState(163)<> 0)) then
result := C_RCtrl;
RCtrl := result = C_RCtrl;
if LAlt <> (b3 and (GetKeyState(164)<> 0)) then
result := C_LAlt;
LAlt:= result = C_LAlt;
if b3 and b2 and (GetKeyState(165)<> 0) then
begin
RAlt:=true;
if RAlt <> LAlt then
result:=C_RAlt;
end else
RAlt:=false;
end;
Hoffe ihr könnt damit etwas anfangen, weil ich dieses Thema null durchblicke (mit LCtrl und RCtrl).
MfG