C++ Keybinder Problem

  • Moin,


    ich will mir mit C++ einen Keybinder für SAMP erstellen.
    Vorerst soll nur die Funktion eine beliebige Taste zu drücken, diese dann ausgelesen und gespeichert wird.
    Bisher habe ich aber eine solche Funktion/Möglichkeit nicht gefunden.
    Kann mir da jemand auf die Sprünge helfen?



    MfG

  • Er möchte einen Keybinder machen aber nicht mit AHK sondern mit C++ was eine andere Programmiersprache ist.

    Das ist mir klar. Deswegen auch die beiden Funktionen, welche ich dafür benutzen würde. Trotzdem verstehe ich nicht, was er vorhat. Für mich liest sich sein Text ungefähr so: "Es soll eine zufällige Taste gedrückt und gespeichert werden." Das ergibt für mich einfach nicht viel Sinn.

  • Das ist mir klar. Deswegen auch die beiden Funktionen, welche ich dafür benutzen würde. Trotzdem verstehe ich nicht, was er vorhat. Für mich liest sich sein Text ungefähr so: "Es soll eine zufällige Taste gedrückt und gespeichert werden." Das ergibt für mich einfach nicht viel Sinn.

    Man soll einfach in ein Feld mit der Maus klicken und eine beliebige Taste drücken.
    Diese wird dann einer Funktion zugewiesen und wenn man dann diese Taste wieder drückt die Funktion ausgeführt.
    Wie bei SAMP für die Steuerung. Da kann man auch jeder Taste auf der Tastatur die Vorwärtsbewegung zuweisen.



    MfG

  • Ok, ich will dir hier nicht auf den Schlips treten oder so, aber wie viel Ahnung und Erfahrung hast du denn von C++ oder vom Programmieren im Allgemeinen?
    C++ ist eine der am schwierigsten zu lernenden Sprachen meiner Meinung nach und wenn es keinen besonderen Grund gibt, sie zu verwenden (z.B. mit anderen Sprachen nicht zufriedenstellend umsetzbar), würde ich erstmal mit etwas anderem anfangen. Solltest du bei C++ bleiben wollen, kann ich dir für GUIs die Qt Library empfehlen, damit kann man so ziemlich alles umsetzen.

  • Ok, ich will dir hier nicht auf den Schlips treten oder so, aber wie viel Ahnung und Erfahrung hast du denn von C++ oder vom Programmieren im Allgemeinen?
    C++ ist eine der am schwierigsten zu lernenden Sprachen meiner Meinung nach und wenn es keinen besonderen Grund gibt, sie zu verwenden (z.B. mit anderen Sprachen nicht zufriedenstellend umsetzbar), würde ich erstmal mit etwas anderem anfangen. Solltest du bei C++ bleiben wollen, kann ich dir für GUIs die Qt Library empfehlen, damit kann man so ziemlich alles umsetzen.

    Wenn man Autohotkey als Programmiersprache zählen kann, dann habe ich dort schon einiges an Erfahrung.
    So viel komplexer ist C++ für mich nicht unbedingt, nur einige Funktionen sind nicht so "einfach" wie in Autohotkey.


    Suche immer noch.



    MfG

  • Ich weiß nicht mal, was ich darauf noch antworten soll... Autohotkey und C++ sind zwei völlig verschiedene Welten. Wie gesagt, ich kann nur empfehlen, C++ ordentlich und von Grund auf zu lernen, sonst wirst du nicht weit kommen.

  • Vorerst soll nur die Funktion eine beliebige Taste zu drücken, diese dann ausgelesen und gespeichert wird.

    Dies kannst du in C++ mit GetAsyncKeyState machen, wie Madd92 schon gesagt hat. Ich weiß nicht wieso du die Taste speichern willst. Aber hier mal ein Beispiel


    C
    if (GetAsyncKeyState(VK_NUMPAD1))
    {
    	//Do something
    }
    
    
    SendInput brauchst du eig. nicht Direkt. du könntest auch auf die Adresse zugreifen und dann z.B. SendChat etc erstellen.
  • Dies kannst du in C++ mit GetAsyncKeyState machen, wie Madd92 schon gesagt hat. Ich weiß nicht wieso du die Taste speichern willst. Aber hier mal ein Beispiel

    C
    if (GetAsyncKeyState(VK_NUMPAD1))
    {
    	//Do something
    }
    
    
    SendInput brauchst du eig. nicht Direkt. du könntest auch auf die Adresse zugreifen und dann z.B. SendChat etc erstellen.

    Ja zugegeben mein Satz ist grammatikalisch nicht ganz korrekt.
    Sowas suche ich für C++:
    https://autohotkey.com/docs/commands/GuiControls.htm#Hotkey



    MfG

  • Ja zugegeben mein Satz ist grammatikalisch nicht ganz korrekt.Sowas suche ich für C++:
    https://autohotkey.com/docs/commands/GuiControls.htm#Hotkey



    MfG

    Ja genau..
    Der Slayz hat dir bereits den Ansatz gegeben.
    Oder wie glaubst du ist AutoHotKey geschrieben?
    Genau so!


    https://www.google.de/search?q…+is+autohotkey+written+in


    Du fängst Quasi von 0 an.
    Ich würde dir aber erst raten, dass du C++ besser lernst, denn dann später im Memory Hacking mit C++ wird es ein bisschen schwerer.

  • Ich verstehe es schon, was @SLaYz meint und es ist funktioniert auch, aber es ist nicht das was ich suche.
    Wenn ich meine C++ Anwendung starte, will ich bei jedem Starten gefragt werden, welche Taste ich für eine bereits festgelegte Funktion benutzen möchte.
    Also drücke ich z.B. die Taste Z.
    Dann könnte ich mit dem Snippet von SLaYz arbeiten und statt VK_NUMPAD1 die Taste einsetzen.


    Wie man Abfragt, ob eine Taste gedrückt worden ist habe ich auch schon vorher gewusst.
    Aber ich will ja HERAUSFINDEN welche Taste gedrückt worden ist, also eine UNBEKANNTE.



    MfG

  • Man soll einfach in ein Feld mit der Maus klicken und eine beliebige Taste drücken.Diese wird dann einer Funktion zugewiesen und wenn man dann diese Taste wieder drückt die Funktion ausgeführt.

    Ich gehe also davon aus, du hast schon ein GUI. Da du hierzu aber keine Informationen gibst, würde ich vorschlagen, du googelst einfach mal nach "Key Press Event" und entsprechender Bibliothek/Framework.

  • Ich gehe also davon aus, du hast schon ein GUI. Da du hierzu aber keine Informationen gibst, würde ich vorschlagen, du googelst einfach mal nach "Key Press Event" und entsprechender Bibliothek/Framework.

    Key Press Event bringt mich schon um einiges weiter.
    Bin auf folgendes gestoßen:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Damit könnte man es machen, nur kann man dann nicht die Numpad1 Taste von der normalen 1 Taste unterscheiden.
    Gibt es eine Funktion, die einem die gerade gedrückte Taste in einem solchen Format ausgibt?:
    VK_NUMPAD1



    MfG

  • "Gets a character from the console without echo". Ich wüsste nicht wie dir das mit Tastenbelegungen weiterhelfen soll. Eine Unterscheidung zwischen NUMPAD1 und 1 ist hier nicht möglich. Wie gesagt, wenn du ein GUI nutzt (z.B. Windows Forms oder Qt) kannst du KeyPress Events der einzelnen Controls benutzen. Ansonsten lies dich am besten mal in die Win API ein. Mit GetKeyboardState könntest du den Status aller Virtual Keys auslesen, das ist aber m.M.n. umständlicher als notwendig.