F-Tasten Tool

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • F-Tasten Tool

    Ich habe ein solchen Threat schon beim Alten-Design der Seite geöffnet und wollt nun mal Fragen, wer so nett war, und mir eine Dll für dieses Tool machen wollte. Bist du(der unbekannt) eigenlich schon fertig?
  • Das war ich! Fertig bin ich noch nicht, aber ich arbeite dran. Momentan mag die DLL einfach nicht und ich habe keine Ahnung, warum. Wahrscheinlich stehe ich mit der Nase vorm Problem und sehe es nicht. :( Der GM will meine DLL einfach nicht laden.

    EDIT: Ich bin dumm. Meine DllMain-Funktion gibt false zurück. Was dazu führt, das es einen Fehler gibt, wenn ich eine Funktion aufrufe.

    Die DLL funktioniert jetzt also. Ich lad sie als Anhang hoch.
    Diese Skripts musst du definieren:

    keyhook_init:

    Quellcode

    1. // definiert die DLL-Funktionen und installiert den Hook
    2. // diese Funktion muss vor allen anderen Funktionen einmal aufgerufen werden
    3. var dll, khk_install;
    4. dll = "FKeyHook.DLL";
    5. khk_install = external_define(dll,"hook_install",dll_cdecl,ty_real,0);
    6. global.khk_uninstall = external_define(dll,"hook_uninstall",dll_cdecl,ty_real,0);
    7. global.khk_checkkey = external_define(dll,"hook_check_key",dll_cdecl,ty_real,0);
    8. //Keyboardhook installieren
    9. external_call(khk_install);
    Alles anzeigen
    keyhook_check

    Quellcode

    1. // überprüft die gedrückten Tasten
    2. // sollte in das Step-Event eines Objekts kommen, das immer vorhanden ist
    3. // Gibt den Index der gedrückten F-Taste zurück (zB 1 bei F1; -1 wenn keine Taste gedrückt)
    4. return external_call(global.khk_checkkey);
    keyhook_uninstall

    Quellcode

    1. // Entfernt den Hook.
    2. external_call(global.khk_uninstall);
    Dateien
    • fkeyhook.zip

      (52,74 kB, 252 mal heruntergeladen, zuletzt: )
    I have always wished that my computer would be as easy to use as my telephone. My wish has come true. I no longer know how to use my telephone.
    Bjarne Stroustrup


    Mein GML-Tutorial

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Cygnus ()

  • Ok! DANKE SEHR! DAnn werde ich mal versuchen, ob ich es denn hinbekomme.

    Jetzt hab ich aber doch noch mal ne Frage.
    Wie machst du das eigentlich. Braucht man, wenn man ne Dll machen will, irgendwelche Fähigkeiten zum Beispiel, muss man sich gut mit Windows auskennen oder wie schafft man das?

    Könnte ich das auch lernen, wenn ich wollt?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Undertaker ()

  • Original von Undertaker
    Ok! DANKE SEHR! DAnn werde ich mal versuchen, ob ich es denn hinbekomme.

    Jetzt hab ich aber doch noch mal ne Frage.
    Wie machst du das eigentlich. Braucht man, wenn man ne Dll machen will, irgendwelche Fähigkeiten zum Beispiel, muss man sich gut mit Windows auskennen oder wie schafft man das?

    Könnte ich das auch lernen, wenn ich wollt?
    Du musst C, C++ oder Delphi können. Und du musst Geduld haben, wenn du die MSDN-"Hilfe" durchsuchst. Zu den Hooks habe ich einfach Code aus einer Website kopiert und etwas angepasst und es hat funktioniert. Zum DLL-Programmieren musst du also meistens nur wissen, wo man etwas nachlesen kann. ;)

    Funktioniert die DLL eigentlich?
    I have always wished that my computer would be as easy to use as my telephone. My wish has come true. I no longer know how to use my telephone.
    Bjarne Stroustrup


    Mein GML-Tutorial
  • Ich weiss nicht so richtig. Wäre schon möglich. Also ich habe die Scipts definiert, die Dll in den Ordner gemacht, wo ich das F-Tasten Tool abgespeichert habe, das keyhook_check script in den Step event des Objektes gamecht und die einzelnen F-Tasten bestimmt. Wenn ich nun starte kommt ne Fehlermeldung, die besagt, das in dem keyhook_check Script in der Zeile return external_call(global.khk_checkkey);

    eine unbekannt Variable khk_checkkey ist. Was habe ich falsch gemacht. ICh bin noch nicht so erfahren im umgang mit Dlls und script.

    Ich habe mal versucht das keyhook_init script gleich zu beginn des Prog zu starten mit execute_scipt. Dann zeigt er mir zum Anfang eine fehlermeldung, mit error execute script, oder so, dann drücke ich auf ignore und ich komme wenigstens schon mal ins Prog. Die F-Tasten funktionieren dann auch, wenn der Focus auf diesem Prog liegt. Arbeite ich kurz in word, oder so, klappt es nicht, sonern ich muss erst wieder das Prog focusieren.
  • Das Init-Script rufst du einfach auf mit

    Quellcode

    1. keyhook_init();
    Und in einem Step-Event schreibst du dann z.B.

    Quellcode

    1. var key;
    2. key = keyhook_check_key();
    3. if (key != -1)
    4. show_message("Die Taste F"+string(key)+" wurde gedrückt");
    Wenn das mit dem Fokus nicht klappt, dann schau mal, ob "Freeze the game when the form loses focus" (in den Game Options) aktiviert ist. Wenn nicht, dann ist das ein Problem mit dem Hook-System und es funktioniert einfach nicht. Sorry.
    I have always wished that my computer would be as easy to use as my telephone. My wish has come true. I no longer know how to use my telephone.
    Bjarne Stroustrup


    Mein GML-Tutorial

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Cygnus ()

  • Öhhm, mal eine Frage:
    Was macht diese DLL eingentlich?
    Wenn ich richtig verstanden hab, fragt sie die F-Tasten ab.
    Aber geht das nicht auch mit

    Quellcode

    1. if (keyboard_check(vk_f1...12) == 1) then (...)

    ?

    Ich will nicht pushen, nur ich geh grad wiedermal durch, wa sman schließen könnte, und dabei bin ich was stutzig geworden.
  • Also ich wollte ein F-Tasten Tool machen. Wenn ich also auf eine F-Taste drücke, soll ein Sound erscheinen, auch wenn das game nicht im Focus ist. Jedoch habe ich es nicht hinbekommen, bei mir gings nur, wenn das game den focus hat, aber wenn das mit keyboard_check_direct geht, dann werde ich es mal so versuchen.

    EDIT_ Jo das geht, aber jetzt noch ne Frage. Geht es, und wenn wie, dass ich die F-Tasten für Windows deaktivieren, d.h. dass wenn ich auf F1 drücke und mein GM-Prog nicht den Focus hat, dass dann nicht die Windows Help-datei geöffnet wird. Genauso mit F3, da wird dann immer das dialog feld " Suchen" geöffnet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Undertaker ()

  • Mhh... Scheinbar hat das noch keiner gesehn, deine neue Frage.
    Ich bezweifle, dass das vernünftig(!) geht, denn Windows ist ja dann immerhin das aktive Programm.
    Probiere es aber mal mit io_clear(), wenn die F-Taste gedrückt wird. Kann es jetzt leider nicht testen, aber wenn du Glück hast und der Game Maker vor Windows hockt, was ich aber bezweifle.
    Vielleicht gibt es doch eine Möglichkeit per DLL, aber Mark O. hat selber mal davon gesprochen, dass er Probs damit hat, mein ich mich zu entsinnen...

    Sollte sich das geklärt haben, wird hier zugemacht :D.
  • Benutzer online 1

    1 Besucher