|
You last visited: Today at 07:41
Advertisement
C++ Problem
Discussion on C++ Problem within the C/C++ forum part of the Coders Den category.
06/13/2011, 20:09
|
#1
|
elite*gold: 31
Join Date: Feb 2011
Posts: 405
Received Thanks: 485
|
C++ Problem
Hallo zusammen,
Ich möchte in C++ einen Befehl schreiben der wenn der Benutzer Numpad0 drückt, etwas ausgeführt wird. Wie heisst der Befehl dafür? Und braucht man dafür noch welche Include´s?
|
|
|
06/13/2011, 20:17
|
#2
|
elite*gold: 0
Join Date: Apr 2011
Posts: 901
Received Thanks: 164
|
Normaler weise hat das eher nix mit Metin2 zu tun.
Es soll z.B. ein Bot für Metin2 werden aber sowas gehört glaube ich eher in die Coder Section
|
|
|
06/13/2011, 20:19
|
#3
|
elite*gold: 31
Join Date: Feb 2011
Posts: 405
Received Thanks: 485
|
Nein es soll ein Hack werden, bitte um Antwort.
|
|
|
06/13/2011, 20:29
|
#4
|
elite*gold: 1371
Join Date: Dec 2007
Posts: 14,904
Received Thanks: 19,354
|
*moved
in der M2 Sektion kenne sich doch die wenigsten damit aus.
|
|
|
06/13/2011, 20:32
|
#5
|
elite*gold: 31
Join Date: Feb 2011
Posts: 405
Received Thanks: 485
|
Ok danke
|
|
|
06/13/2011, 20:48
|
#6
|
elite*gold: 1371
Join Date: Dec 2007
Posts: 14,904
Received Thanks: 19,354
|
Kannst dir ja mal das durchlesen:
|
|
|
06/13/2011, 20:49
|
#7
|
elite*gold: 0
Join Date: Feb 2011
Posts: 413
Received Thanks: 20
|
Kannst du überhaupt C++
|
|
|
06/13/2011, 20:53
|
#8
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
|
|
|
06/13/2011, 21:01
|
#9
|
elite*gold: 31
Join Date: Feb 2011
Posts: 405
Received Thanks: 485
|
Kann mir jemand ein Beispiel geben? z.B. der code für ein Programm: Wenn Numpad0 gedrückt wird, beendet sich das Programm.
|
|
|
06/13/2011, 21:36
|
#10
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
:-/
Code:
while(true)
{
Sleep(250);
short keyState = GetAsyncKeyState(VK_NUMPAD0);
if((keyState & 1) == 1)
std::cout << "Numpad0 wurde gedrueckt";
}
|
|
|
06/14/2011, 13:55
|
#11
|
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
|
Irgendwie verstehe ich nicht folgenden Abschnitt, also ich verstehe ihn schon, nur nicht wieso das so angewandt wird.
Code:
if((keyState & 1) == 1)
Wenn die taste gedrückt worden ist, wird ja 1 wiedergegeben.
Deswegen hätte ich folgendes gemacht:
, das funktioniert soweit aber nicht.
Würdest du mir eklären wieso du
Code:
if((keyState & 1) == 1)
geschrieben hast?
Lg
|
|
|
06/14/2011, 14:31
|
#12
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Quote:
Wenn die taste gedrückt worden ist, wird ja 1 wiedergegeben.
|
Nö.
Siehe MSDN:
Quote:
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.
|
Da man keinen direkten Zugirff auf einzelne Bits hat, sondern immer nur auf eine bestimmte Anzahl gleichzeitig (vgl. Byte, Word, DWord, QWord), bedient man sich der Bit-Operatoren, um zu prüfen, welche Bits gesetzt sind und welche nicht.
Bit-Operatoren Siehe:
Nun ist das ganze auch kein Geheimnis mehr. Will man prüfen, ob das niedrigste Bit gesetzt ist, also das Bit an der Stelle 0, nimmt man den AND-Operator:
Code:
Wenn niedrigstes Bit gesetzt:
11001001 00010001 //Rückgabewert von GetAsyncKeyState [sizeof(short) = 16bit]
00000000 00000001 // (2^0)= 1 in dualer Schreibweise
-------------------
00000000 00000001 //Ergebnis nach der AND-Operation (=1)
Wenn niedrigstes Bit nicht gesetzt:
11001001 00010000 //Rückgabewert von GetAsyncKeyState
00000000 00000001 // (2^0)=1 in dualer Schreibweise
-------------------
00000000 00000000 //Ergebnis nach der AND-Operation (=0)
|
|
|
06/14/2011, 14:52
|
#13
|
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
|
Ah, okay.
Also werden bei einem Tastenschlag bits gesetzt und mit dem bit operator & prüft man dies dann?
wenn ja, dann hab ich es glaub ich verstanden.
|
|
|
06/14/2011, 15:26
|
#14
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Keine Ahnung, was genau intern passiert, wenn du eine Taste drückst. Da werden wahrscheinlich auch iwelche Bits gesetzt, verschickt, etc.
Für dich wichtig ist einfach nur, dass GetAsyncKeyState() eine Variable vom Typ "short" zurückgibt. Eine Variable vom Typ short ist 16bit lang, entspricht also einem WORD = 2Byte. Laut MSDN repräsentiert das niedrigste Bit, ob die Taste nach dem letzten Aufruf von GetAsyncKeyState() gedrückt wurde oder nicht. Da du aber nur auf die 16bit insgesamt Zugriff hast und nicht auf das einzelne Bit des Rückgabewerts, nimmst du eine AND-Maske, um das niedrigste Bit herauszufiltern. Das niedrigste Bit ist an der Stelle 0, d.h. du musst mit dem Wert 2^0 = 1 = 0000000000000001 vergleichen. Mehr steckt da nicht dahinter.
|
|
|
06/14/2011, 16:44
|
#15
|
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
|
alles klar, habs dann verstanden, danke :-)
|
|
|
Similar Threads
|
[Hilfe]Ungelöstes Server Erstell Problem, ausführliche Problem Schilderung
09/15/2011 - Flyff Private Server - 8 Replies
Hey Com!
Ich hoffe, dass dieser Thread nicht als Spamthread angesehen wird, da ich ja gestern schon einen zu diesem Thema eröffnet habe.
Sorry wenn ich euch mit dem Thema nerve, aber ich sitze nun schon 4 Tage über dem Problem, und finde einfach keine Lösung.
Nun werde ich hier allerdings eine ausführlichere Beschreibung des Problems geben.
Mein Problem ist, dass ich den Windows Mssql Server 2008/2005 aus Sedrika's TuT nicht installieren kann, da sobald ich ihn immer installiere...
|
All times are GMT +2. The time now is 07:41.
|
|