Uśpienie / Anulowanie kliknięcia klawisza

0

Witam
Chciałbym uśpić klawisz lub anulować jego KeyDown. O co chodzi: Robię programik, który zamiast klikniętego klawisza, klika inny. Korzystam z UserActivityHook z biblioteki user32.dll, a wygląda to tak:

private void Form1_Load(object sender, EventArgs e)
        {
            UserActivityHook actHook = new UserActivityHook();
            actHook.KeyDown += new KeyEventHandler(actHook_KeyDown);
        }

i handler:

void actHook_KeyDown(object sender, KeyEventArgs e)
        {
            string klawisz;
            klawisz = Convert.ToString(e.KeyData);
            if (klawisz == "Pause")
                keybd_event(0x0D, 0x45, 0x1, UIntPtr.Zero);
        }

W tym przypadku po naciśnięciu klawisza "Pause", robi się Enter.

Wszystko działa pięknię, ale gdy np. zamiast klawisza "Pause" chcę przechwycić np. klawisz "L" i zastąpić go "P", to klawisz "P" zostanie faktycznie wciśnięty, ale niestety klawisz "L" również. W efekcie czego w wordzie po naciśnięciu klawisza "L" dostajemy wpis "PL".
Dlatego muszę po "keybd_event(0x0D, 0x45, 0x1, UIntPtr.Zero);" napisać jakieś polecenie powstrzymujące wciśnięcie klawisza "L".

Proszę o pomoc.
Rychu

0

Genialne! :)
Dziękuję. Trochę mi zajęło dojście do tego, ale w końcu wyczytałem, że wystarczy dodać:

e.Handled = true;

Dziękuję jeszcze raz i pozdrawiam.
Rychu

1 użytkowników online, w tym zalogowanych: 0, gości: 1