Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: DOS und Win32-Konsole (nur Lesen) ::  Tastertureingabe abfangen im laufende c++ Programm  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Thema geschlossen
Autor Nachricht
Bronkobob
Unregistrierter




Beitrag 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
Beitrag 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
Beitrag 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




Beitrag 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
Beitrag 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
Beitrag 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
Beitrag C++ Forumbot Forumbot 12:49:34 22.07.2011   Titel:              Zitieren

Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum DOS und Win32-Konsole verschoben.

Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?


Dieses Posting wurde automatisch erzeugt.

_________________
Besuchen Sie unsere Bücherecke.
http://www.c-plusplus.de/bucher.php
Mit jeder Bestellung unterstützen Sie das Forum.
Bronkobob
Unregistrierter




Beitrag 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
Beitrag 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




Beitrag 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...
c++.de :: DOS und Win32-Konsole (nur Lesen) ::  Tastertureingabe abfangen im laufende c++ Programm  
Gehen Sie zu Seite 1, 2  Weiter
Thema geschlossen

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.