Taste filtern
-
Wofür brauchst du die überhaupt?
-
das steht doch da direkt im header. die app.h ist eigebunden und wenn ich die rauslasse spuckt der compiler ne menge fehler aus und es geht nicht
und wenn es drin ist dann findet er sie nicht und dann geht es nicht.kannst du nicht einfach wirklich den code hier posten
damit ich sehe wie es aussehen muss
-
Der Code in der MSDN ist ein Beispiel, das die Verwendung von Hooks demonstriert und natürlich nicht die Copy&Paste Lösung für dein Problem.
Ich gehe davon aus, dass die Motivation für dieses kleine Projekt das Interesse daran ist, wie so etwas funktioniert. Zweifellos könnte ich dir eine fertige Lösung vorwerfen. Dann hättest du aber absolut nichts dabei gelernt. Darum werd ich das nicht tun. Konkrete Fragen werd ich dir aber, wie gesagt, gerne und nach bestem Wissen und Gewissen beantworten
-
also so vom reinen ablauf.
1. alle header einbinden die ich brauche
2. den hook reinkopieren
3. dann meinen code dahinter
4. perfekter halfscope?
-
Ich versteh nicht ganz. Was meinst du mit Hook reinkopieren und deinem Code dahinter? Den Hook wirst du selber schreiben wollen, damit du deinen Code in den Hook reintun kannst.
Sag mal, mir kommts irgendwie so vor, als würd es dir noch massiv an Programmiergrundlagen fehlen. Vielleicht solltest du erstmal ordentlich C bzw. C++ lernen bevor du dich an solche Dinge wagst?
-
ich werd noch wahnsinnig.
Dann erklär mir doch bitte den Ablauf/aufbau des hooks. ich habe jetzt schon so oft gesagt das ich das nicht verstehe. Ich möchte doch nur das du das mal erklärst.ich wusste auch nicht das das so kipliziert ist.
-
Du definierst eine Callbackfunktion wo du deinen Code reinschreibst, der ausgeführt werden soll, wenn die Taste gedrückt wird. Und diese Funktion übergibst du dann per SetWindowsHookEx() an Windows, das die dann aufruft, wann immer eine Taste gedrückt wird.
Was genau verstehst du daran nicht?
-
also. ich muss mich erstmal bedanken für deine geduld. ich bin da etwas schwierig.
hier ist jetzt der code, aber irgendwas stimmt noch nicht.
#include "stdafx.h" void halfscope(void) { int i=0; do { POINT punkt; int taste; int x, y; HWND fenster=FindWindowA("ConsoleWindowClass",0); ShowWindow(fenster,0); taste=getchar(); if(taste==0||taste==224) { taste=getchar(); if(taste==133) { GetCursorPos(&punkt); x=punkt.x; y=punkt.y; mouse_event(MOUSEEVENTF_RIGHTDOWN,x,y,0,0); Sleep(1000); mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0); mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0); mouse_event(MOUSEEVENTF_RIGHTUP,x,y,0,0); } } } while(i==0); } int main() { SetWindowsHookEx(halfscope); return EXIT_SUCCESS; }
ist das jetzt wenigstens vom prinzip her richtig?^^
-
SetWindowsHookEx() will mehr als einen Parameter. Wofür brauchst du die Schleife und das FindWindow() und ShowWindow() und die ganzen getchar() und if-Abfragen? Dein Programm beendet sich sofort nachdem es den Hook gesetzt hat wieder.
-
Also:
Es geht um das Spiel Modern Warfare 2.
Ich wollte einen Bot erstellen, der bei einer bestimmten Taste, also hier F11, immer einen perfekten und immer gleichen Schuss durchfrührt, mit anvisieren. Damit nicht bei jeder taste gehalfscoped wird, die getch() und if() sachen.und die Endlosschleife dachte ich braucht man, damit sich das Programm nicht beendet.
Welche Parameter hätte den die Funktion noch gerne?
Die f11 taste lege ich dann auf meine maustasten damit ich da nicht immer hin muss^^
-
Na die Dokumentation zur Funktion hab ich ja in meinem ersten Beitrag schon verlinked. Dass du eine Schleife brauchen wirst damit dein Programm nicht sofort wieder beendet stimmt schon. Allerdings wirst du diese Schleife nicht im Callback haben wollen, sondern im Hauptthread. getch() wird nichts bringen, denn das liest ein Zeichen aus der Konsole. Das ist aber überhaupt nicht was du willst.
-
Welche Parameter brauche ich denn da?
Und wie kann ich das mit getch() ändern, also welche Funktion ist das dann?PS: Die Schleife ist jetzt umgebaut
PPS: Beim ersten ist es die WH_KEYBOARD_LL nech?
-
Versuch mal genau zu verstehen was ein Callback ist und was SetWindowsHookEx() für dich tut. Wenn dir das Konzept eines Callback nicht klar ist, dann ist jede weitere Diskussion zu dem Thema sinnlos.
Edit: WH_KEYBOARD_LL klingt schonmal nicht schlecht.
-
Ich glaube das läuft in eine völlig falsche Richtung. Ich möchte bitte einfach nur eine Erklärung, und nicht hören, dass ich nichts weiß. Ich brauche doch erstmal den Code um ihn zu verstehen. Kannst du das nicht bitte machen. Ich habe doch schon den Code von mir gepostet, den musst du doch dann nur noch einsetzen..
BITTE BITTE BITTE!
-
Und wie willst du eine Erklärung verstehen, wenn dir die nötigen Grundlagen dafür fehlen? Hast du schon Erfahrung mit dlls? Damit du einen globalen Hook installieren kannst, musst du deine Hook Prozedur in eine dll packen. Näheres dazu hier.
-
3P!CF41L schrieb:
Ich glaube das läuft in eine völlig falsche Richtung. Ich möchte bitte einfach nur eine Erklärung, und nicht hören, dass ich nichts weiß. Ich brauche doch erstmal den Code um ihn zu verstehen.
Nein!
Man benötigt keinen Code um zu verstehen. Man benötigt nur Stichworte, die einen in die Richtung und zu einer Dokumentaion führen.
Code findet man bei der Suche automatisch...
-
Mach doch erst mal einen "hello world" keyboard-Hook.
Also du bastelst dir einen keyboardhook, beispiele gibts genug im Netz, der z.B. eine Messagebox mit "Hello Word" öffnet, wenn du aus einem beliebigen Programm heraus die Taste F11 drückst. Hast du diese Aufgabenstellung erfolgreich erledigt, dann erweiterst du das Ganze so wie du dir das Vorstellst.
Wenn man keinen Plan hat (ist jetzt nicht negativ gemeint), empfiehlt es sich eben, sich in kleinen Schritten dem Ziel zu nähern.
-
JaJa. Mein Problem ist ja nicht das Hello World, sondern der Keyboard Hook. Ich finde da nicht gescheites, was ich verstehe.
-
Na da sind wir doch schon eins weiter ... wo happerts den am hook?
P.S: Wir sind hier nicht unfreundlich, wir versuchen nur Leute zum Denken zu animieren.
-
So.Problem gelöst. Wenn ich mich erinnert hätte dann hätte ich hier garnicht fragen brauchen. Mit GetAsyncKeyState geht das wunderbar!
Aber danke für eure Hilfe, hab ja doch was nebenbei mitbekommen.!!