Keybinder in c++

08/01/2013 16:37 AutofarmSeller#1
Hey Leute, ich wollte mich mal ein bisschen an C++ machen, weil ich grad totale Motivation aufbringen kann :D
auf jeden fall, Ich habe vor einen Keybinder in Cpp zu schreiben
Ich habe den ersten Teil bereits gefertigt, und wollte nun mal wissen ob das so richtig ist ( Weil das CMD-Window die ganze zeit wieder zu geht :/ )
tut mir bitte ein Gefallen ich will keine Sourcecodes da ich das alleine lernen möchte o.ô

Code:
#include "windows.h" 
#include <iostream>
#include <conio.h>

using namespace std;


int main()
{


 while(1)
  {
	  if(GetAsyncKeyState(VK_NUMPAD1));
	  {

		  
		  keybd_event(VkKeyScan('t'),0x9e,0,0);
		  keybd_event(VkKeyScan('/'),0x9e,0,0);
		  keybd_event(VkKeyScan('m'),0x9e,0,0);
		  keybd_event(VkKeyScan(' '),0x9e,0,0);
		  keybd_event(VkKeyScan('S'),0x9e,0,0);
		  keybd_event(VkKeyScan('O'),0x9e,0,0);
		  keybd_event(VkKeyScan('F'),0x9e,0,0);
		  keybd_event(VkKeyScan('O'),0x9e,0,0);
		  keybd_event(VkKeyScan('R'),0x9e,0,0);
		  keybd_event(VkKeyScan('T'),0x9e,0,0);
		  keybd_event(VkKeyScan('O'),0x9e,0,0);
		  keybd_event(VkKeyScan('R'),0x9e,0,0);
		  keybd_event(VkKeyScan('T'),0x9e,0,0);
		  keybd_event(VkKeyScan(' '),0x9e,0,0);
		  keybd_event(VkKeyScan('S'),0x9e,0,0);
		  keybd_event(VkKeyScan('T'),0x9e,0,0);
		  keybd_event(VkKeyScan('E'),0x9e,0,0);
		  keybd_event(VkKeyScan('H'),0x9e,0,0);
		  keybd_event(VkKeyScan('E'),0x9e,0,0);
		  keybd_event(VkKeyScan('N'),0x9e,0,0);
		  keybd_event(VkKeyScan(' '),0x9e,0,0);
		  keybd_event(VkKeyScan('B'),0x9e,0,0);
		  keybd_event(VkKeyScan('L'),0x9e,0,0);
		  keybd_event(VkKeyScan('E'),0x9e,0,0);
		  keybd_event(VkKeyScan('I'),0x9e,0,0);
		  keybd_event(VkKeyScan('B'),0x9e,0,0);
		  keybd_event(VkKeyScan('E'),0x9e,0,0);
		  keybd_event(VkKeyScan('N'),0x9e,0,0);
		  keybd_event(VkKeyScan('!'),0x9e,0,0);
		  keybd_event(VK_RETURN,0x1c,0,0);
		  Sleep(100);
		  
		  
	  }

		  
	  return 1;

	  }

 }
08/01/2013 16:59 _Roman_#2
Dass das CMD-Fenster wieder zu geht hat schon seinen Richtigkeit, weil der den Code ja fertig ausgeführt hat. Das kannst du z.B. verhindern, indem du das Programm über die CMD selber startest
08/01/2013 17:02 AutofarmSeller#3
Quote:
Originally Posted by _Roman_ View Post
Dass das CMD-Fenster wieder zu geht hat schon seinen Richtigkeit, weil der den Code ja fertig ausgeführt hat. Das kannst du z.B. verhindern, indem du das Programm über die CMD selber startest
Wie mache ich das , das z.B das Fenster offen bleibt, und wenn ich dann wieder auf Num1. drücke das trotzdem alles wiederholt + aufbleibt?
08/01/2013 18:03 Padmak#4
Raus mit dem return, du willst es doch in einer while-Schleife haben, oder nicht?
Tipp: es muss woanders hin, außerdem wird bei fehlerloser Ausführung 0 returned

Padmak
08/01/2013 18:07 .SkyneT.#5
Quote:
Originally Posted by Padmak View Post
[...]außerdem wird bei fehlerloser Ausführung 0 returned
Desswegen ist return 1 hier auch passend :|
08/01/2013 18:10 AutofarmSeller#6
Quote:
Originally Posted by Padmak View Post
Raus mit dem return, du willst es doch in einer while-Schleife haben, oder nicht?
Tipp: es muss woanders hin, außerdem wird bei fehlerloser Ausführung 0 returned

Padmak
Sehe ich das richtig das du dich verlesen hast? :D
08/01/2013 18:10 .SkyneT.#7
Quote:
Originally Posted by AutofarmSeller View Post
Sehe ich das richtig das du dich verlesen hast? :D
Nein hat er nicht, dein return 1, ist definitiv in der Schleife.
-> Programm schließt sich nach 1 Durchgang
08/01/2013 18:13 AutofarmSeller#8
Achso also heißt das wenn ich den Return wert rausnehme das es unbegrenzt oft wiederholt?,

Sprich bei Return 0; = x * x ..
Bei Return 1; = x * 1 ?
08/01/2013 18:16 .SkyneT.#9
Außerdem, was zur Hölle soll das bitte:
Code:
if(GetAsyncKeyState(VK_NUMPAD1));
Weg mit dem ; !


Bzgl. dem return, verwende doch einfach mal den Debugger, und
du siehst was da passiert.
08/01/2013 18:17 AutofarmSeller#10
was soll ich stattdessen nutzen? O.o mir ist keine andere Funktion bis jetzt bekannt was ich zum keysync nutzen kann..
08/01/2013 18:23 .SkyneT.#11
Quote:
Originally Posted by AutofarmSeller View Post
was soll ich stattdessen nutzen? O.o mir ist keine andere Funktion bis jetzt bekannt was ich zum keysync nutzen kann..
Code:
int main()
{
   while (1)
   {
      if (GetAsyncKeyState(VK_NUMPAD1))
      {
          //DoStuff
      }
   }
   return 0;
}
Wenn du einen ganzen Satz schreiben willst,
wäre außerdem eine Schleife angebracht, so sieht
das einfach nur hässlich aus.

Edit:
Dazu auch noch ein kleines Beispiel:
Code:
std::string str ("foobar");
for (std::string::iterator it = str.begin(); it < str.end(); ++it)
{
	keybd_event(VkKeyScan(*it),0x9e,0,0);
}
08/01/2013 18:35 AutofarmSeller#12
Code:
   keybd_event(VkKeyScan('DieDasDaDum'),0x9e,0,0);
Würde das funktionieren?
08/01/2013 18:36 .SkyneT.#13
Quote:
Originally Posted by AutofarmSeller View Post
Code:
   keybd_event(VkKeyScan('DieDasDaDum'),0x9e,0,0);
Würde das funktionieren?
Siehe vorherigen Post, und nein wird es nicht.

Weiters habe ich den berechtigten Verdacht das
es dir haufenweise an Grundlagen fehlt, kann das sein ?
08/01/2013 18:38 AutofarmSeller#14
Quote:
Originally Posted by .SkyneT. View Post
Siehe vorherigen Post, und nein wird es nicht.

Weiters habe ich den berechtigten Verdacht das
es dir haufenweise an Grundlagen fehlt, kann das sein ?
Nein ich bin grad nur total durcheinander, weil ich ein Keybinder in VB geschrieben habe, und das in C++ umsetzten möchte,
Ich habe ein Buch von C++ und bin derzeit dabei es zulernen x]
08/01/2013 21:34 MrSm!th#15
Quote:
Originally Posted by AutofarmSeller View Post
Achso also heißt das wenn ich den Return wert rausnehme das es unbegrenzt oft wiederholt?,

Sprich bei Return 0; = x * x ..
Bei Return 1; = x * 1 ?
Lern erstmal die Grundlagen.