| Autor |
Nachricht |
Bronkobob
Unregistrierter
|
Bronkobob Unregistrierter
10:47:28 22.07.2011 Titel: |
Tastertureingabe abfangen im laufende c++ Programm |
Zitieren |
Hallo,
wie lässt sich eine Tasteneingabe in einer laufenden nativen c++ Applikation abfangen?
Danke im v****** |
|
|
|
 |
asc
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.01.2007
Beiträge: 5713
|
asc Mitglied
10:52:35 22.07.2011 Titel: |
Re: Tastertureingabe abfangen im laufende c++ Programm |
Zitieren |
| Bronkobob schrieb: | | wie lässt sich eine Tasteneingabe in einer laufenden nativen c++ Applikation abfangen? |
Du musst schon genauer werden, was für eine c++ Anwendung es ist (UI oder Console, verwendetes Framework...).
In einem Konsolenprogramm könnte man es vielleicht mit Threading versuchen, wo ein Thread in regelmäßigen Abständen den Tastenstatus abfragt. In einem UI basierten Programm gibt es dafür zumeist das Eventhandling... |
_________________ in theory there's no difference between theory and practice. in practice there is. (yogi berra)
In der Theorie gibt es kein Unterschied zwischen Theorie und Praxis. In der Praxis sehr wohl.
|
|
 |
EOutOfResources
Mitglied
Benutzerprofil
Anmeldungsdatum: 09.12.2010
Beiträge: 1550
|
EOutOfResources Mitglied
11:01:32 22.07.2011 Titel: |
|
Zitieren |
Tastatur-Hook? |
_________________ C++ - where friends can touch your privates, but your family can't.
|
|
 |
Bronkobob
Unregistrierter
|
Bronkobob Unregistrierter
11:25:18 22.07.2011 Titel: |
|
Zitieren |
Es handelt sich um eine Win32 Konsolenaplikation, die in einer whileschleife laufen soll bis eine Taste gedrückt wird. Wie funktioniert das mit Tastatur-Hook? |
|
|
|
 |
Kóyaánasqatsi
Mitglied
Benutzerprofil
Anmeldungsdatum: 03.10.2008
Beiträge: 3176
|
Kóyaánasqatsi Mitglied
11:26:30 22.07.2011 Titel: |
|
Zitieren |
//EDIT: Nichts. |
_________________ createch-web www.wie-nehme-ich-zu.de
Zuletzt bearbeitet von Kóyaánasqatsi am 11:26:52 22.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Belli
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2009
Beiträge: 1772
|
Belli Mitglied
11:39:56 22.07.2011 Titel: |
|
Zitieren |
Kein Hook, einfach:
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <windows.h>
#include <iostream>
bool keyPressed()
{
INPUT_RECORD ir;
DWORD dummy;
PeekConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &ir, 1, &dummy);
return dummy == 1;
}
int main()
{
while(!keyPressed())
{
std::cout << "keine Taste gedrueckt\n";
Sleep(1000);
}
std::cout << "\n*** Taste gedrueckt ***\n";
} | | |
|
|
|
 |
C++ Forumbot
Forumbot
Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 17114
|
C++ Forumbot Forumbot
12:49:34 22.07.2011 Titel: |
|
Zitieren |
|
 |
Bronkobob
Unregistrierter
|
Bronkobob Unregistrierter
13:36:45 22.07.2011 Titel: |
|
Zitieren |
Vielen Dank für den Codeausschnitt, bei mir funktioniert es aber noch nicht ganz die schleife wird gar nicht erst durchlaufen. |
|
|
|
 |
Belli
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2009
Beiträge: 1772
|
Belli Mitglied
15:42:15 22.07.2011 Titel: |
|
Zitieren |
Interessant ... das ist allerdings kein Codeausschnitt, sondern ein vollständig lauffähiges Programm ... und macht hier auch, was es soll ...
Aber Achtung:
So, wie es da jetzt geschrieben ist, werden keine Input-Ereignisse aus dem Input-Puffer entfernt, d.h., wenn Du diese Funktion aufrufst, nachdem sie einmal ein Zeichen gefunden hat, und dieses Zeichen nicht explizit 'wegliest', wird sie immer true zurückliefern. |
Zuletzt bearbeitet von Belli am 15:45:12 22.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Bronkobob
Unregistrierter
|
Bronkobob Unregistrierter
15:18:00 23.07.2011 Titel: |
|
Zitieren |
Hallo,
peekconsoleInput reagiert auch auf Mausbewegungen und das wollte ich vermeiden. Habe es jetzt mit
while(!kbhit())
gelöst... |
|
|
|
 |