Tastenkombinations-Aufrufprogramm :D



  • Kurz und knapp.
    Ich habe mit meinem Laptop immer das Problem, dass ich so viel
    mit dem keypad herumhantieren muss, weil ich auf bestimmte Verknüpfungen
    klicken muss.
    Jetzt will ich mein eigenes Verknüpfuns-Programm schreiben.
    Bis jetzt habe ich alles nur das Wichtigste fehlt noch
    die "dauerhafte Überwachung" der Tastatur.
    Habe schon viel herumgegooglet.
    Aber nirgens finde ich ein Prog, welches mir systemweit, bei einer tastenkombi "Hello World" coutet(ausgibt mit cout :D).
    Kann mir jemand den kompletten quellcode mal schreiben oder einen link dazu geben??????



  • Du kannst unter Windows einer Datei-Verknüpfung eine Tastenkombination zuordnen - mit der wird dann automatisch das verknüpfte Programm gestartet.

    (geht mit Sicherheit bei Verknüpfungen im Startmenü, afaik auch auf dem Desktop - ob jede .lnk überwacht wird, bin ich mir nicht sicher)



  • Das könntest du beispielsweise über Hooks realisieren.



  • Jo weiss ich.
    Aber erstens finde ich das mal ein für mich echt nützliches Programm.
    Und zeitens kann man das Programm selber besser gestalten.
    Hab einfach mal Lust was am Wochenende was zu proggen.
    Weis jemand Antworten auf meinen ersten Post

    PS Der 3 Post ist eben erst angekommen.
    Jo so mit Hooks meinte ich das auch aber Leider verstehe ich nicht genau wie sie eingesetzt werden.
    Kann jemand vllt ein Bsp. posten





  • Wie erstelle ich eine .dll datei im borland c++ builder 6?
    Verstehe ich das richtig:
    In einer .dll datei lege ich eine(n) hook fest?
    Ein hook legt fest welche tasten abgefragt werden??
    In der exe datei includet man die .dll und kann dann z.B.
    auf einen tastendruck reagieren??

    1.Ist das richtig??
    2.Wie erstelle ich eine .dll Datei im Borland c++ builder 6??



  • Ein System-Weiter-Hook *muss* in einer DLL sein, damit diese DLL von *jedem* Prozess geladen werden kann (zumindest in der aktuellen Sitzung)...

    Bzgl. DLL-Erstellung: Dazu gibt es hier extra ein "Borland C++ Builder" Forum 😉



  • AceKiller73 schrieb:

    Kann jemand vllt ein Bsp. posten

    main.c:

    //---------------------------------------------------------------------------
    #include <windows.h>
    #pragma hdrstop
    
    //---------------------------------------------------------------------------
    
    HOOKPROC hHookProc;
    HINSTANCE hHookDLL;
    HHOOK hHook;
    
    BOOL hook_install (void)
    {
      if ((hHookDLL = LoadLibrary ("keyhook.dll")) == NULL)
        return (FALSE);
      hHookProc = (HOOKPROC) GetProcAddress (hHookDLL, "KeyboardProc");
      return ((hHook = SetWindowsHookEx (WH_KEYBOARD, hHookProc, hHookDLL, 0)) != NULL);
    }
    
    void hook_release (void)
    {
      UnhookWindowsHookEx (hHook);
    }
    
    #pragma argsused
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
      if (!hook_install ())
      {
        MessageBox (NULL, "Error", "System-Hook-Beispielproramm", MB_OK | MB_ICONERROR);
        return (1);
      }
    
      MessageBox (NULL, "Der installierte Hook überwacht die Tastenkombination Alt+1.\n"
                        "Zum Deinstallieren des Hooks 'OK' klicken.", "System-Hook-Beispielproramm", MB_OK);
      hook_release ();
      return (0);
    }
    

    dllmain.c:

    #include <windows.h>
    
    #pragma argsused
    int WINAPI DllEntryPoint (HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
      return (1);
    }
    
    LRESULT __declspec (dllexport) CALLBACK KeyboardProc (int code, WPARAM keycode, LPARAM lparam)
    {
      WORD keyinfo = lparam >> 16;
    
      if ((keycode == '1') && !(keyinfo & KF_UP) && (keyinfo & KF_ALTDOWN)) /* Alt+1 gedrückt */
      {
        MessageBox (NULL, "Alt+1 gedrückt", "System-Hook-Beispielproramm", 0);
        return (1);
      }
      return (0);
    }
    


  • Nur so nebenbei: Warum denn alles nochmals erfinden...
    In einen der letzten c´ts wurde sowas vorgestellt (und was noch viel mnehr kann).
    Nur so als Anhaltspunkt: http://www.heise.de/software/default.shtml?prg=21932&T=hotkey&osg=1



  • Danke für den Code.
    Leider kommt bei mir der Error aber ich werde mich damit beschäftigen.

    PS:
    Kann es sein das er die keyhook.ddl net findet??



  • Jochen Kalmbach schrieb:

    Nur so nebenbei: Warum denn alles nochmals erfinden...
    In einen der letzten c´ts wurde sowas vorgestellt (und was noch viel mnehr kann).
    Nur so als Anhaltspunkt: http://www.heise.de/software/default.shtml?prg=21932&T=hotkey&osg=1

    Weil man sowas auch als Übung nutzen kann? oder wieso schreiben denn 1000 Leute nen Turm von Hanoi Prog, haben doch schon 999 davor geschrieben...

    Desweiteren kann man solche Progs immer seinen eigenen Wünschen anpassen und man kann sagen hey das hab ich mir selbst geschrieben..



  • Nicht gleich aufregen... war ja nur ein gut gemeint....



  • Jochen Kalmbach schrieb:

    Nicht gleich aufregen... war ja nur ein gut gemeint....

    hab mich nich aufgeregt, musst mich falsch verstanden haben *g*
    Waren nur Gründe, wieso man etwas neu Programmiert.

    Man wieso verstehen mich viele imemr falsch ^^ 🙄



  • AceKiller73 schrieb:

    Kann es sein das er die keyhook.ddl net findet??

    Das kann gut sein, wenn du die DLL, die du hoffentlich aus der zweiten Datei kompiliert hast, anders genannt hast.



  • Ääähm also die erste hab ich main.c genannt und die Zweite hab ich dllmain.c genannt. Das war wohl falsch.
    Also muss ich die dann keyhook.dll nennen??
    Also einfach unter speichern unter>>dateiname>>keyhook.dll??



  • Bin am verzweifeln!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 😞 😞
    Kann mir jemand bittebittebitte mal Schritt für Schritt (entweder für devc++ oder borland c++ builder) erklären wie ich einen systemweiten hook erstelle und wie ich
    ein Programm dazu schreibe welches immer wenn ich auf z.B. alt drücke ausgibt, dass ich auf alt gedrückt habe.

    PUH.



  • Noch jemand da?



  • AceKiller73 schrieb:

    Ääähm also die erste hab ich main.c genannt und die Zweite hab ich dllmain.c genannt. Das war wohl falsch.

    Nein.

    AceKiller73 schrieb:

    Also muss ich die dann keyhook.dll nennen??
    Also einfach unter speichern unter>>dateiname>>keyhook.dll??

    Nein! Du erstellst eine DLL-Anwendung mit dem C++Builder (Datei|Neu...|DLL-Experte, VCL-Unterstützung aus), kopierst den Quelltext, den ich oben als dllmain.c gepostet habe, hinein, speicherst das Projekt unter dem Namen "keyhook". Wie du das als main.c gepostete Programm nennst, ist egal, es muß bei der Ausführung allerdings im gleichen Verzeichis wie die DLL liegen.
    Für weiterführende Informationen zu Hooks siehe hier.



  • Ok.
    Erst mal danke er erstellt jetzt die .dll Datei.
    Aber:
    und ich weiß wenn ich so etwas proggen will solte ihc das wissen.
    Aber wie erstelle ich im BCB6 eine winapi anwendung also die anwendung die ich für die hiegenannte main.c brauche.
    Wenn ich einfach neu>>anwendung mache kommt ja auch ein formular.
    Wenn ich einfach ein .c Datei erstelle hat und unit1.cpp schließe dann geht es allerdings weiß ich nicht ob das richtig ist.
    Ja und wenn ich dann main.exe ausführe kommt immer noch der Error.
    Kennt ihr ne Seite wo man einen einfachen(sehr kompliezierte hab ich schon) keyhook herunterladen kann??
    Hab ihr selber schon mal sowas geproggt oder könnt ihr das sonst irgendwie hochladen??

    Naja ich denke ihr werdet alle 🙄 🙄 🙄 << so machen.
    Aber ich will einfach mal dranbleiben und nicht wie sonst immer aufgeben 😞



  • AceKiller73 schrieb:

    Aber wie erstelle ich im BCB6 eine winapi anwendung also die anwendung die ich für die hiegenannte main.c brauche.
    Wenn ich einfach neu>>anwendung mache kommt ja auch ein formular.

    Eine neue Anwendung für WinAPI oder Konsole erstellst du mit "Datei|Neu|Weitere...|Konsolenexperte", VCL-Unterstützung aus, Konsolenprojekt aus. Sprache ist an sich egal, für obiges Beispiel tuts auch C.

    AceKiller73 schrieb:

    Kennt ihr ne Seite wo man einen einfachen(sehr kompliezierte hab ich schon) keyhook herunterladen kann??
    Hab ihr selber schon mal sowas geproggt oder könnt ihr das sonst irgendwie hochladen??

    Viel einfacher als bei meinem Beispiel gehts nun wirklich nicht.

    AceKiller73 schrieb:

    Naja ich denke ihr werdet alle 🙄 🙄 🙄 << so machen.

    🙄 🙄 🙄


Anmelden zum Antworten