symulacja nacisniecia klawisza a skrót klawiaturowy

0

Witam.

Napisałem sobie programik, który symuluje naciśnięcie klawisza Działa mi to na obojętnie jakim aktywnym oknie. Z tym że, program i po prostu wpisuje znak a nie naciska klawisz. Ideą programu było to, aby sam naciskał mi wybrany klawisz, który jest skrótem klawiaturowym w danym programie. W tym przypadku jest to
Moje pytanie:
czemu programy nie interpretują wysyłanego znaku przez key_event jako skrótu klawiaturowego?
Jeśli jest na to inna odpowiednia funkcja, to byłby ktoś tak miły podać co to za jaka?

Kod programu:

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
keybd_event(VkKeyScan('`'), 0, 0, 0);
keybd_event(VkKeyScan('`'), 0, KEYEVENTF_KEYUP, 0);
end;
0

Poza naciskaniem klawiszy, trzeba je jeszcze zwolnić..

0

Dla mnie parametr KEYEVENTF_KEYUP zwalnia klawisz, ale pewnie sie myle.

Dobra, mam tutaj kod programu, który szuka uchwytu okna
o nazwie Notatnik, i jeśli takowe istnieje, to wysyła do niego
tekst zawarty w obiekcie memo.

Moje pytanie: [b]jakich parametrów użyć w funkcji sendmessage
aby wysłać do znalezionego okna naciśnięcie dowolnego klawisza?[/b]
Z tym że nie chodzi mi tutaj o zwykłe wpisanie znaku do programu,
ale również aby ta symulacja wciśnięcia klawisza była
rozpoznawana przez program jako skrót klawiaturowy np.

zwykły keybd_event z parametrami (VkKeyScan(''), 0, 0, 0); wyśle mi do programu znak , i po otworzeniu w programie
jakiegoś edita, to znak ten jest wpisywany,
ale program ma do tego klawisza/znaku przypisany skrót
klawiaturowy, który po takiej funkcji nie działa/nie wykonuje przypisanej mu funkcji,
trzeba fizycznie ten klawisz wcisnąć.

Any ideas? Any help?

0

Moje pytanie: [b]jakich parametrów użyć w funkcji sendmessage
aby wysłać do znalezionego okna naciśnięcie dowolnego klawisza?

moze tak:

SendMessage(Twój uchwyt, WM_CHAR, Ord('`'), 0);
0

A ctrl? VK_CONTROL?

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