"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.
Beiträge von Madd92
-
-
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 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.
-
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. -
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.
-
SendInput, GetAsyncKeyState? Ich verstehe nicht genau, was du vorhast.
-
dword_8ACDE4 also der Pointer nach dem Base Pointer (+ 4 Bytes) zeigt übrigens auf das Ende der angelegten Struktur, also auf die Adresse nach dem letzten eingetragenen String. Daraus wird dann auch die Anzahl berechnet: ((dword_8ACDE4 - dword_8ACDE0) / 144);
-
Wenn ich das richtig gelesen habe, hast du nach einem Pointer auf die letzte Nachricht im Chat gesucht. Da du ja aber die Gesamtstruktur finden willst (da es nicht unbedingt einen Pointer zur letzten Nachricht geben muss), musst du schauen, wo die erste Chatzeile gespeichert ist und dann ein paar Bytes zurückgehen um den Anfang zu finden. Wenn es schon mehr als 100 Chateinträge gab, dann kannst du auch ganz einfach einen der Strings auf read/ write access beobachten und wirst so auf den Base Pointer kommen. Alternativ zu dieser Trial & Error Suche kann ich auch das Lernen von Assembler und Benutzen vom IDA Disassembler empfehlen. Damit kann man gezielter Strukturen erkennen, Funktionen finden und den Programmablauf nachvollziehen.
-
Ich weiß natürlich nicht welche Version du hast, aber bei mir ist der Chat(-Protokoll) Pointer bei 0x8ACDE0 gespeichert. Ich habe einfach nach den Nachrichten unter Q->"Letzte Botschaften" gesucht. Die Struktur sieht wie folgt aus:
Also stets:- 4 leere Bytes
- ein Pointer zum String
- maximale Stringlänge (128 Bytes)
- tatsächliche Stringlänge
- String (128 Bytes)
Insgesamt hat jeder Eintrag also 144 Bytes, es kann maximal 100 Einträge geben. Danach werden die Einträge verschoben, sodass die ältesten gelöscht werden.
-