c++ GetAsyncKeyState

Diskutiere c++ GetAsyncKeyState im Developer Network Forum im Bereich Hardware & Software Forum; hi zusammen , ich versuche gerade ein programm zu schreiben dass die gedrückten tasten auswertet (auch pfeil und esc, del , etc) und bei...
  • c++ GetAsyncKeyState Beitrag #1
Max11.111

Max11.111

Bekanntes Mitglied
Dabei seit
12.06.2008
Beiträge
2.416
Reaktionspunkte
0
hi zusammen ,

ich versuche gerade ein programm zu schreiben dass die gedrückten tasten auswertet (auch pfeil und esc, del , etc) und bei nichteingabe nach xx sec automatisch weitermacht.

wie geht dass??

und wie schreibe ich das jetzt ??
bin über GetAsyncKeyState gestolpert
kann mir einer von euch profis sagen wie ich das jetzt verwende..???:pleased: :idee:
danke für euere antworten
 
  • c++ GetAsyncKeyState Beitrag #3
Max11.111

Max11.111

Bekanntes Mitglied
Dabei seit
12.06.2008
Beiträge
2.416
Reaktionspunkte
0
und wie verwende ich das jetzt
???
 
  • c++ GetAsyncKeyState Beitrag #4
Max11.111

Max11.111

Bekanntes Mitglied
Dabei seit
12.06.2008
Beiträge
2.416
Reaktionspunkte
0
haut das hin:

cout<<"PRESS\t F1 , F2 , DEL OR TAB\t TO ENTER USER WINDOW
\n\n\nTO START WITHOUT INSTALLATION PRESS ANY OTHER KEY \n\n";

cin>>bios;

do
{
if(GetAsyncKeyState(VK_112)
{
goto Bios:
}
if(GetAsyncKeyState(VK_113)
{
goto Bios:
}
if(GetAsyncKeyState(VK_46)
{
goto Bios:
}
if(GetAsyncKeyState(VK_9)
{
goto Bios:
}
else
{
Sleep(100);
anzahl++;
};
}while (anzahl<5);


Bios:


.....bala bla bla::......
 
  • c++ GetAsyncKeyState Beitrag #5
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Der Code zeigt es doch eigentlich.
Also es wird einfach in einer Schleife abgefragt welche Taste grade gedrückt wurde. GetAsyncKeyState speichert dann in der Variable (in den Klammern) im Beispiel x:
GetAsyncKeyState(x);
Eine Zahl, die Zahl kann dann mittels einer switch abfrage ausgewertet werden.
Wenn z.B. x = 65 siehst du, dass die Taste 'a' gedrückt wurde:

Code:
switch(x){
case 65:
  fprintf(key, "a");
  break;
So kannst du eben auswerten, was gedrückt wurde. Das Beispiel stellt einen Keylogger dar, jeder Tastenanschlag wird in einer Schleife in eine Datei gespeichert, mit Urhzeit und Datum.

Zu deinem Beispiel:
Code:
if(GetAsyncKeyState(x);
if(x == VK_112){
goto bla;
}
if(x == VK_113){
goto bla;
}

Du rufst demnach nur einmal GetAsyncKeyState auf und wertest dann die Variable (hier: x) aus.
Da du das dann sicher zu viele if Abfragen sind nimmt man dann switch wie im Beispiel.
 
  • c++ GetAsyncKeyState Beitrag #6
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Hast du das selbst getestet? In der MSDN steht da nämlich ganz was anderes.
The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.

SHORT GetAsyncKeyState(
int vKey // virtual-key code
);

Parameters
vKey
Specifies one of 256 possible virtual-key codes. For more information, see Virtual-Key Codes.
Windows NT: You can use left- and right-distinguishing constants to specify certain keys. See the Remarks section for further information.

Return Values
If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. The return value is zero if a window in another thread or process currently has the keyboard focus.
 
  • c++ GetAsyncKeyState Beitrag #7
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Was meinst du jetzt mit getestet, x liefert den Key zurück, zumindest funktioniert das Beispiel mit dem Keylogger so? Du hast doch die Schleife und gibst quasi alles rein und dann siehst du anhand von x doch, welcher dieser Keys gerade gedrückt wurde?
Oder hab ich da was falsch verstanden?!
 
  • c++ GetAsyncKeyState Beitrag #8
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Ich meine damit, dass GetAsyncKeyState nichts in x speichert, sondern einen abzufragenden Tastencode als Parameter erwartet.
 
  • c++ GetAsyncKeyState Beitrag #9
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Oh okay, das war dann mein Fehler. :)
 
  • c++ GetAsyncKeyState Beitrag #10
Max11.111

Max11.111

Bekanntes Mitglied
Dabei seit
12.06.2008
Beiträge
2.416
Reaktionspunkte
0
okay hat dann irgendeiner eine idee wie ich erkennen kann welche taste gedrückt wurde???
 
  • c++ GetAsyncKeyState Beitrag #11
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Die passende Funktion wäre wohl GetKeyboardState. Die schreibt dir den Zustand jeder Taste in ein Array. Da die sleep-Funktion wirklich die angegebene Zeit wartet, ohne dass das Programm weiterläuft, kannst du damit eher nicht dein gewünschtes Timeout erzeugen.
Besser wäre es, die aktuelle Zeit (GetTickCount) zu speichern und dann in einer Schleife permanent GetKeyboardState aufzurufen. Wird entweder eine der gewünschten Tasten gedrückt, oder überschreitet die aktuelle Zeit den gespeicherten Wert plus gewünschtem Timeout, wird die Schleife verlassen und je nach Wunsch das Ergebnis ausgewertet.
Zu beachten ist, dass keine der Standardfunktionen Tastendrücke liefert, wenn ein anderes Fenster den Fokus hat. Sprich, ein Keylogger lässt sich so nicht realisieren.
 
  • c++ GetAsyncKeyState Beitrag #12
R

retn

Bekanntes Mitglied
Dabei seit
04.10.2007
Beiträge
152
Reaktionspunkte
0
oder treiber programmierung ;) auf rootkit.com gibts schöne anwendungsbeispiele.
 
  • c++ GetAsyncKeyState Beitrag #13
Max11.111

Max11.111

Bekanntes Mitglied
Dabei seit
12.06.2008
Beiträge
2.416
Reaktionspunkte
0
Die passende Funktion wäre wohl GetKeyboardState. Die schreibt dir den Zustand jeder Taste in ein Array. Da die sleep-Funktion wirklich die angegebene Zeit wartet, ohne dass das Programm weiterläuft, kannst du damit eher nicht dein gewünschtes Timeout erzeugen.
Besser wäre es, die aktuelle Zeit (GetTickCount) zu speichern und dann in einer Schleife permanent GetKeyboardState aufzurufen. Wird entweder eine der gewünschten Tasten gedrückt, oder überschreitet die aktuelle Zeit den gespeicherten Wert plus gewünschtem Timeout, wird die Schleife verlassen und je nach Wunsch das Ergebnis ausgewertet.
Zu beachten ist, dass keine der Standardfunktionen Tastendrücke liefert, wenn ein anderes Fenster den Fokus hat. Sprich, ein Keylogger lässt sich so nicht realisieren.


super dass funzt...:victory: :victory:
 
Thema:

c++ GetAsyncKeyState

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben