getch() nie wystarczy?

0

witam wszystkich
sorry za to, że jestem początkujący, ale ciężko w sieci znaleźć odpowiedź na moje pytanie
potrzebuję funkcji która będzie pozwalała na realizację funkcji pozwalającej na wykonywanie instrukcji w związku z wciśnięciem klawisza i jego wycisnięciem:
np wciskam klawisz A:
robi się jakaś instrukcja,
a kiedy puszczam A:
robi się inna, kolejna
proszę o szybką pomoc, nie jestem programistą a potrzebuję to do małego uzupełnienia projektu.
pozdro

0

Nie, nie wystarczy. Musisz to odpalic w oddzielnym watku. Ewentualnie skorzystac w funkcji, ktore Ci beda zwracaly stan klawisza i w petli sprawdzac za kazdym razem, czy juz zostal puszczony (czy nie nalezy wyjsc z petli).

0

moge prosic o jakis przyklad? najlepiej z zaznaczeniem miejsca gdzie mozna wychwycic zbocze opadajace sygnalu z klawiatury
pozdrawiam

0
nodobra napisał(a)

z zaznaczeniem miejsca gdzie mozna wychwycic zbocze opadajace sygnalu z klawiatury

Bez przesady , musisz skorzystać z dodatkowych bibliotek , lub WinApi i pętli komunikatów gdzie można te powiadomienia wyłapać.
Z prostszych rzeczy istnieje fun kbhit() która sprawdza czy naciśnięto jakiś klawisz .
Pewnie taką funkcjonalność dostarczają biblioteki do tworzenia gier , nie wiem bo nie używałem .
Dużo zależy też od środowiska w którym masz zamiar stworzyć aplikację o czym nie ma słowa w twoich postach.

0

C++ visual studio 2005.
no to troche sie rozpisze o co mi chodzi:
mam silczek DC, którym steruję, sterowanie polega na wysłaniu instrukcji z pozycją silnika.
inkrementacja pozycji mnie nie zadowala, ponieważ w przypadku małych, czy dużych różnic pozycji występuje zjawisko "przycinania" co jest zależne od komunikacji PC -> mikroprocesor silniczka.
wymyśliłem zatem algorytm który wygląda tak, że po wciśnięciu klawisza wysyłam instrukcję zadającą położenie końcowe, natomiast zwolnienie klawisza ma powodować odczyt pozycji (w momencie puszczenia klawisza) i wpisanie tej pozycji do mikroprocesora.
jeśli chodzi o silniczek + mikro, to na to pozwala - testy działają np. przy wciśnięciu jednego, a później innego klawisza.
chciałbym, żeby to było na tym samym, tylko z wykorzystaniem ich stanów. dziękuję za dotychczasową pomoc i proszę o jeszcze,

0

Wystarczy sformułować odpowiednie zapytanie do google, jedne z pierwszych wyników:

http://msdn.microsoft.com/en-us/library/ms646304(v=vs.85).aspx
http://www.codeproject.com/KB/system/keyboard.aspx

Po kilku zdaniach dowiedziałem się że:

To press a key, use:
keybd_event(ai_key,0,0,0)

To release a key, use:
keybd_event(ai_key,0,2,0)

Może akurat ta funkcja nie spełni Twoich oczekiwań ale sądzę, że jak poszukasz dłużej niż ja (dwie minuty) na pewno coś znajdziesz ;)

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