Announcement

Collapse
No announcement yet.

Tastatur Eingabe Abfangen/Manipulieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tastatur Eingabe Abfangen/Manipulieren

    Hi all

    Ich würde gerne wissen wie ich die Tastatureingabe Abfangen und manipulieren kann

    Bsp:

    Ich drücke W und er soll mir J hinnschreiben(so in etwa).

    Dies soll nicht nur auf die anwendung bezogen sein sondern global die gesamten windows programme betreffen.

    mfg

    Grongkalonka

  • #2
    Eine DLL mit der Win 32 API SetWindowsHookEx Funktion realisieren
    Christian

    Comment


    • #3
      kannst du mir das genauer erläutern?

      Comment


      • #4
        Hast du dir die Funktion angesehen?
        Christian

        Comment


        • #5
          ja aber ich kann nicht wirklich was damit anfangen ^^,habe bisher nur mit einfachen funktionen gearbeitet .

          Ich entschuldige mich für meine unwissenheit.

          ein beispiel würde mir sehr gelegen kommen.

          mfg
          Zuletzt editiert von Grongkalonka; 11.02.2008, 20:55.

          Comment


          • #6
            Die DLL zu dem Programm hier

            http://www.marquardtnet.info/cecke/p...rorechner.html

            Beachte, dass dort Funktionen genutzt werden, die es nur im VCL Framework gibt.



            //---------------------------------------------------------------------------
            #include <vcl.h>
            #include "eurodll.h"
            #include "math.h "
            #pragma hdrstop
            #include "split.h"
            HHOOK hHook;
            HINSTANCE hinstglob;
            int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
            {
            hinstglob=hinst;
            return 1;
            }
            //---------------------------------------------------------------------------

            void DLL_EXP StartDll()
            {
            hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)Tasta turtest,hinstglob,0);
            if(hHook==NULL)
            {
            MessageBox(NULL,"HOOK??","Programmstart",MB_APPLMO DAL|MB_ICONSTOP|MB_OK);
            }
            }
            //---------------------------------------------------------------------------

            void DLL_EXP StopDll()
            {
            if(hHook!=NULL)
            UnhookWindowsHookEx(hHook);
            }
            //---------------------------------------------------------------------------

            LRESULT CALLBACK DLL_EXP Tastaturtest(int nCode,WORD wp,DWORD lp)
            {
            HGLOBAL hb;
            LPBYTE pos;
            char htext[200];
            double eingabe;
            if(nCode==HC_ACTION)
            {
            if((wp==VK_F7||wp==VK_F8)&&(lp&0x80000000))
            {
            String sClipboard;
            if(IsClipboardFormatAvailable(CF_TEXT))
            {
            OpenClipboard(NULL);
            hb=GetClipboardData(CF_TEXT);
            CloseClipboard();
            if(hb)
            {
            pos=(LPBYTE)GlobalLock(hb);
            lstrcpy(htext,pos);
            GlobalUnlock(hb);
            sClipboard=htext;
            }
            }
            else
            MessageBox(NULL,"Die Zwischenablage enthält keinen Text!","Hinweis", MB_OK);
            sClipboard.Trim();
            replace(sClipboard,".",",");
            replace(sClipboard,"\r\n","");
            replace(sClipboard,"\r","");
            replace(sClipboard,"\n","");
            try
            {
            eingabe=StrToFloat(sClipboard);
            if(wp==VK_F7)
            eingabe/=1.95583;
            else
            eingabe*=1.95583;
            eingabe=round(eingabe,2);
            sClipboard=FloatToStr(eingabe);
            hb=GlobalAlloc(GHND|GMEM_MOVEABLE,sClipboard.Lengt h()+1);
            pos=(LPBYTE)GlobalLock(hb);
            memmove(pos,sClipboard.c_str(),sClipboard.Length() );
            OpenClipboard(NULL);
            EmptyClipboard();
            SetClipboardData(CF_TEXT,hb);
            CloseClipboard();
            GlobalUnlock(hb);
            return true;
            }
            catch(...)
            {
            MessageBox(NULL,"Wert konnte nicht erkannt werden!","Hinweis", MB_OK);
            }
            }
            else if((wp==VK_F7||wp==VK_F8))
            {
            return true;
            }
            }
            return (int)CallNextHookEx(hHook,nCode,wp,lp);
            }
            //---------------------------------------------------------------------------
            Christian

            Comment


            • #7
              danke danke

              Comment


              • #8
                hab jetzt auch n paar tutorials über dlls gelesen aber ich schätze ich bin noch nicht soweit in der winapi :/
                Zuletzt editiert von Grongkalonka; 13.02.2008, 13:54.

                Comment

                Working...
                X