kopiren/einfügen abfangen
-
hallo,
ich bin gerade dabei ein Programm zu schreiben dass Events wie z.b: copy- Befehle abfängt bzw. nur bemerkt und dann protokolliert.Wie kann man das am besten realisieren?
-
Ich glaub das wird mit C++ schwer und müsste man eher mit Asm machen, aber ich will dir nichts falsches erzählen und vielleicht hat jemand die Lösung... Man könnte das Kopieren und Einfügen z.B. prüfen, indem man schaut, ob Strg+V gedrückt wird, problem dabei ist aber, dass man auch mit der Maus kopieren und einfügen kann.
-
Standard C++ hat keine solche Möglichkeiten, es hat ja auch keine GUI Möglichkeiten. Du brauchst also eine API oder ein Framework, mit welchem du arbeiten kannst. Wir haben in diesem Forum verschiedene Abteilungen für Frameworks und APIs. Hier bist du aber definitiv falsch.
Auf welchem System arbeitest du denn? Und hast du schon ein Framework oder eine API, mit welcher du arbeitest? Mit diesen Information könnte man dich weiterleiten.
Grüssli
-
Ev. mit Detours: http://research.microsoft.com/en-us/projects/detours/
Simon
-
ich dachte eher an sowas wie hooks
leider kann ich damit nicht viel anfangen und das was ich gefunden habe funktioniert nich so recht :http://www.tutorials.de/forum/c-c-tutorials/164662-tutorial-ueber-windows-hooks.html
fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?und wenn ich das mache wirft der compiler nur mit fehlermeldungen um sich
ich verwende Visual Studio 2008 und dort gibt es nur MFC-DLL-Projekte ?!
Kann man nicht irgendwiewie eine normale DLL erstellen?1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(1) : warning C4627: '#include "hook.dll.h"': skipped when looking for precompiled header use 1> Add directive to 'stdafx.h' or rebuild precompiled header 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(4) : error C2146: syntax error : missing ';' before identifier 'SHARED' 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(4) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(5) : error C2146: syntax error : missing ';' before identifier 'SHARED' 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(5) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(5) : error C2374: 'SHARED' : redefinition; multiple initialization 1> c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(4) : see declaration of 'SHARED' 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(13) : error C2146: syntax error : missing ';' before identifier 'BOOL' 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(20) : error C2065: 'MouseProc' : undeclared identifier 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(30) : error C2146: syntax error : missing ';' before identifier 'BOOL' 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(30) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(30) : error C2086: 'int DLLIMPORT' : redefinition 1> c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(13) : see declaration of 'DLLIMPORT' 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(50) : error C2664: 'FindWindowW' : cannot convert parameter 1 from 'const char [7]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>c:\users\scholz\documents\visual studio 2008\hook\hook.dll\hook.dll\hook.dll.cpp(58) : error C2065: 'g_hMuseHook' : undeclared identifierhook.dll.h hab ich dabei durch denn im tut beschriebenen Header ersetzt:
#include "hook.dll.h" #include "stdafx.h" HHOOK g_hMouseHook SHARED = NULL; HINSTANCE g_hInst SHARED = NULL; BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved) { g_hInst =hInst; return TRUE; } DLLIMPORT BOOL InstallHook() { if (g_hMouseHook != NULL) { return TRUE; } g_hMouseHook = SetWindowsHookEx(WH_MOUSE, MouseProc, g_hInst, 0); if (g_hMouseHook == NULL) { return FALSE; } return TRUE; } DLLIMPORT BOOL UninstallHook() { if (g_hMouseHook != NULL) { UnhookWindowsHookEx(g_hMouseHook); g_hMouseHook = NULL; } return TRUE; } LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam,LPARAM lParam) { if (nCode < 0) return CallNextHookEx(g_hMouseHook, nCode, wParam, lParam); if (nCode == HC_ACTION) { if ((wParam == WM_LBUTTONDOWN)||(wParam == WM_NCLBUTTONDOWN)) { MOUSEHOOKSTRUCT *mhs = (MOUSEHOOKSTRUCT*)lParam; HWND caller = FindWindow("HOOKit", NULL); if (caller != NULL) { PostMessage(caller, WM_USER+123, 0 , MAKELPARAM (mhs->pt.x, mhs->pt.y)); } } } return CallNextHookEx(g_hMuseHook, nCode, wParam, lParam); }genauso wie die hook.cll.cpp:
#include "hook.dll.h" #include "stdafx.h" HHOOK g_hMouseHook SHARED = NULL; HINSTANCE g_hInst SHARED = NULL; BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved) { g_hInst =hInst; return TRUE; } DLLIMPORT BOOL InstallHook() { if (g_hMouseHook != NULL) { return TRUE; } g_hMouseHook = SetWindowsHookEx(WH_MOUSE, MouseProc, g_hInst, 0); if (g_hMouseHook == NULL) { return FALSE; } return TRUE; } DLLIMPORT BOOL UninstallHook() { if (g_hMouseHook != NULL) { UnhookWindowsHookEx(g_hMouseHook); g_hMouseHook = NULL; } return TRUE; } LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam,LPARAM lParam) { if (nCode < 0) return CallNextHookEx(g_hMouseHook, nCode, wParam, lParam); if (nCode == HC_ACTION) { if ((wParam == WM_LBUTTONDOWN)||(wParam == WM_NCLBUTTONDOWN)) { MOUSEHOOKSTRUCT *mhs = (MOUSEHOOKSTRUCT*)lParam; HWND caller = FindWindow("HOOKit", NULL); if (caller != NULL) { PostMessage(caller, WM_USER+123, 0 , MAKELPARAM (mhs->pt.x, mhs->pt.y)); } } } return CallNextHookEx(g_hMuseHook, nCode, wParam, lParam); }vllt könnt ihr mir weiterhelfen
und @Dravere ich habe windows und verwende dabei winforms muss dir also recht geben
-
Kann man nicht irgendwiewie eine normale DLL erstellen?
Doch. Win32 Projekt, dann bei dem Wizard DLL wählen.
Simon
-
ich dachte eher an sowas wie hooks
Aja? Und was glaubst Du macht den detours?
Simon
-
ok danke
habs jetzt gedownloadet mal sehn ob sich da was finden lässt