Maushook
-
Sers,
Ich bin grad dabei ein Proggy zu coden das die Mausposi von einem Rechner an einen anderen sendet und dieser wiederum dan die Mausposi animmt.Anfangs hatte ich auch keine Probleme danbei ( hatte den Befehl GetCursorPos(&pt) genommen), aber als ich einen Tastendruck mitsenden wollte ging das nicht mehr.

Ich hab mir dann die dlls tutorials durcharbeitet, aba irgendwo müssen sich ein paar Fehler eingeschlichen haben ( http://bcb-tutorial.c-plusplus.net/DLL_Tutorial/artikel15.html#hooks )
Die hook dll funktioniert einmandfrei nur bei dem Programm zum ansteuern bekomm ich folgenden fehler:
[C++ Fehler] Unit1.cpp(32): E2451 Undefiniertes Symbol 'hook'also habe ich hook ma definiert:
HHOOK hook;ka ob das richtig war ^^ aba dann kam wenigstens ma eine andere Fehler meldung:
[Linker Fehler] Unresolved external '__fastcall TForm1::OnMouseMove(Messages::TMessage&)' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\CYB3R-\DESKTOP\C++\MAUS HOOK\UNIT1.OBJwähre nett wenn mir jemand weiterhelfen könnte

kompletter Code: Unit1.h
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- __declspec(dllimport) HHOOK InstallHook(HHOOK hook); __declspec(dllimport) BOOL UninstallHook(HHOOK hook); HHOOK hook; class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TButton *Button1; TButton *Button2; TLabel *XLabel; TLabel *YLabel; void __fastcall Button1Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall FormMouseMove(TMessage & msg); private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TForm1(TComponent* Owner); protected: void __fastcall OnMouseMove(TMessage &msg); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_MOUSEMOVE, TMessage, OnMouseMove) END_MESSAGE_MAP(TForm) }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endifUnit1.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { hook = InstallHook(hook); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { UninstallHook(hook); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { if (hook != NULL) UninstallHook(hook); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormMouseMove(TMessage & msg) { XLabel->Caption = Format("X = %d", ARRAYOFCONST(LOWORD(msg.LParam))); YLabel->Caption = Format("Y = %d", ARRAYOFCONST(HIWORD(msg.LParam))); if(msg.WParam == WM_RBUTTONUP) MessageBox(Handle, "Rechtsklick erfolgt!", "HOOKIBOY", MB_OK | MB_ICONINFORMATION | MB_SYSTEMMODAL); } //------
-
Du hast im Header die Funktion OnMouseMove deklariert, im CPP aber nicht implementiert.
Dein FormMouseMove ist zuviel, der dort stehende Code gehört in die (fehlende) Implementierung von OnMouseMove.
-
danke für deine schnelle Antwort. Ich habe es nun so abgeändert aba es funtkioniert immer noch nicht.
da die funktion dann nicht zu form gehört können auch net auf die Variablen zugegriffen werden:
[C++ Fehler] Unit1.cpp(39): E2451 Undefiniertes Symbol 'XLabel' [C++ Fehler] Unit1.cpp(40): E2451 Undefiniertes Symbol 'YLabel' [C++ Fehler] Unit1.cpp(42): E2451 Undefiniertes Symbol 'Handle'//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { hook = InstallHook(hook); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { UninstallHook(hook); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { if (hook != NULL) UninstallHook(hook); } //--------------------------------------------------------------------------- void __fastcall FormMouseMove(TMessage & msg) { XLabel->Caption = Format("X = %d", ARRAYOFCONST(LOWORD(msg.LParam))); YLabel->Caption = Format("Y = %d", ARRAYOFCONST(HIWORD(msg.LParam))); if(msg.WParam == WM_RBUTTONUP) MessageBox(Handle, "Rechtsklick erfolgt!", "HOOKIBOY", MB_OK | MB_ICONINFORMATION | MB_SYSTEMMODAL); } /Unit1.h
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- __declspec(dllimport) HHOOK InstallHook(HHOOK hook); __declspec(dllimport) BOOL UninstallHook(HHOOK hook); HHOOK hook; class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TButton *Button1; TButton *Button2; TLabel *XLabel; TLabel *YLabel; void __fastcall Button1Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TForm1(TComponent* Owner); protected: void __fastcall OnMouseMove(TMessage &msg); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_MOUSEMOVE, TMessage, OnMouseMove) END_MESSAGE_MAP(TForm) }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif@Jansen hab ichs jetzt richtig abgeändert oder hab ich was falsch gemacht?
der findet jetzt die Edit Felder nimmer, weil die funktion ja nimmer zu Klasse gehört
-
sry hatte die eine Zeile falsch gepostet:
void __fastcall FormMouseMove(TMessage & msg)
-
dat gibts net
zu dumm zum kopiere
so diesma peer Hand geschriebevoid __fastcall MouseMove(TMessage & msg)
-
[cpp]void __fastcall TForm1::OnMouseMove(TMessage & msg)
{
XLabel->Caption = Format("X = %d", ARRAYOFCONST(LOWORD(msg.LParam)));
// usw.
}[/cpp]
-
nach ein bissel rumspielen hab ich es doch endlich hinbekommen :>
und nochma thx an Jansen