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.OBJ
    

    wä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;
    //---------------------------------------------------------------------------
    #endif
    

    Unit1.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'
    

    //Unit1.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 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 geschriebe

    void __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


Anmelden zum Antworten