AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Keyhook

Ein Thema von Rastaman · begonnen am 6. Apr 2006 · letzter Beitrag vom 14. Mai 2006
Antwort Antwort
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#1

Probleme mit Keyhook

  Alt 6. Apr 2006, 17:25
Moin.
Ich versuche gerade den Keyhook von www.dsdt.info nach C++ umzusetzen, allerdings klappt es einfach nicht.
Die MessageBox mit "oh man ", wird andauernd angezeigt, und ich weiß nicht woran es liegt ...

DLL:
Code:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#define WM_KEYHOOK WM_USER + 12

bool     SendNext = true; //It always sends a keypress twice, so we have to avoid that
HINSTANCE hInstance;
HHOOK     hHook = NULL;
HWND     hWnd;

bool InstallHook(HWND);
bool UninstallHook();
LRESULT HookProc(int, WPARAM, LPARAM);

int WINAPI DllMain(HINSTANCE hThisInstance, DWORD dwReadon, LPVOID lp)
{
   hInstance = hThisInstance;
   return 0;
}

bool InstallHook(HWND hwnd)
{
   if (hHook == NULL)
   {
      hHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)HookProc, hInstance, 0);
      if (hHook != NULL)
      {
         hWnd = hwnd;
         return true;

      }      
   }
   return false;
}

bool UninstallHook()
{
   if (hHook != NULL)
   {
      if (UnhookWindowsHookEx(hHook) != 0)
      {
         hHook = NULL;
         hWnd = 0;
         return true;
      }
   }
   return false;
}

LRESULT HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
   if (nCode >= 0)
   {
      if (SendNext == true)
      {
         SendMessage(hWnd, WM_KEYHOOK, wParam, lParam);
      }
      SendNext = !SendNext;
   }
   return CallNextHookEx(hHook, nCode, wParam, lParam);
}
Programm:
Code:
#include <windows.h>

#define WM_KEYHOOK WM_USER + 12

typedef bool (*HOOK)(HWND);

HMODULE hLib;

HOOK    InstallHook;
FARPROC UninstallHook;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,
         HINSTANCE hPrevInstance,
         LPSTR lpCmdLine,
         int nShowCmd)
{
   MSG     msg;
   WNDCLASS wc;

   wc.cbClsExtra = 0;
   wc.cbWndExtra = 0;
   wc.hbrBackground = NULL;
   wc.hCursor = NULL;
   wc.hIcon = NULL;
   wc.hInstance = hInstance;
   wc.lpfnWndProc = (WNDPROC)WndProc;
   wc.lpszClassName = "InternetExplorerClass";
   wc.lpszMenuName = NULL;
   wc.style = 0;

   RegisterClass(&wc);

   CreateWindow("InternetExplorerClass", NULL, 0, 0, 0, 0, 0, 0, NULL, hInstance, 0);

   while (GetMessage(&msg, 0, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   return 0;
}    

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   switch (uMsg)
   {
      case WM_CREATE:
         //load DLL
         hLib = LoadLibrary("../DLL/Debug/DLL.DLL");
         if (hLib != NULL)
         {
            InstallHook = (HOOK)GetProcAddress(hLib, "InstallHook");
            UninstallHook = (FARPROC)GetProcAddress(hLib, "UninstallHook");
            if ((InstallHook != NULL) && (UninstallHook != NULL))
            {
               //Install Hook
               if (InstallHook(hWnd))
               {
                  //Hook succeeded
                  return true;
               }
            }
         }
         MessageBox(0, "oh man :(", "", 0);
         //if we´re here something didnt work
         PostQuitMessage(0);
      case WM_CLOSE:
         UninstallHook();
         FreeLibrary(hLib);
         PostQuitMessage(0);
         return true;
      case WM_KEYHOOK:
         MessageBox(0, "", "", 0);
         return true;
      default:
         return DefWindowProc(hWnd, uMsg, wParam, lParam);
   }   
}
Ich weiß ehrlich nicht wo hier der Wurm drin ist

//Edit: Ach ja, wenn ich das Projekt auf Release setze schmiert die exe im hohen Bogen ab
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Probleme mit Keyhook

  Alt 14. Mai 2006, 14:13
Ich gehe davon aus, daß du das Beispiel von "Assarbad" auf DSDT meinst?!

Hast du es inzwischen hinbekommen?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz