有关钩子的DLL帮看看
mouse.cpp文件的代码
:#include "mouse.h"
#pragma data_seg("mydata")
HWND glhPrevTarWnd=NULL;
//上次鼠标所指的窗口句柄
HWND glhDisplayWnd=NULL;
//显示目标窗口标题编辑框的句柄
HHOOK glhHook=NULL;
//安装的鼠标钩子句
HINSTANCE glhInstance=NULL;
//DLL实例句
#pragma data_seg()
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
//如果使用lpReserved参数则删除下面这行
UNREFERENCED_PARAMETER(lpReserved);
if(dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("MOUSEHOOK.DLL Initializing!\n");
//扩展DLL仅初始化一次
if (!AfxInitExtensionModule(MousehookDLL, hInstance))
return 0;
new CDynLinkLibrary(MousehookDLL);
//把DLL加入动态MFC类库中
glhInstance=hInstance;
//插入保存DLL实例句柄
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("MOUSEHOOK.DLL Terminating!\n");
//终止这个链接库前调用它
AfxTermExtensionModule(MousehookDLL);
}
return 1;
}
Cmousehook::Cmousehook()
//类构造函数
{
}
Cmousehook::~Cmousehook()
//类析构函数
{
stophook();
}
BOOL Cmousehook::starthook(HWND hWnd)
//安装钩子并设定接收显示窗口句柄
{
BOOL bResult=FALSE;
glhHook=SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);
if(glhHook!=NULL)
bResult=TRUE;
glhDisplayWnd=hWnd;
//设置显示目标窗口标题编辑框的句柄
return bResult;
}
BOOL Cmousehook::stophook()
//卸载钩子
{
BOOL bResult=FALSE;
if(glhHook)
{
bResult= UnhookWindowsHookEx(glhHook);
if(bResult)
{
glhPrevTarWnd=NULL;
glhDisplayWnd=NULL;//清变量
glhHook=NULL;
}
}
return bResult;
}
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *)lparam;
if (nCode>=0)
{
HWND glhTargetWnd=pMouseHook->hwnd;
//取目标窗口句柄
HWND ParentWnd=glhTargetWnd;
while (ParentWnd !=NULL)
{
glhTargetWnd=ParentWnd;
ParentWnd=GetParent(glhTargetWnd);
//取应用程序主窗口句柄
}
if(glhTargetWnd!=glhPrevTarWnd)
{
char szCaption[100];
GetWindowText(glhTargetWnd,szCaption,100);
//取目标窗口标题
if(IsWindow(glhDisplayWnd))
SendMessage(glhDisplayWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption);
glhPrevTarWnd=glhTargetWnd;
//保存目标窗口
}
}
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}
mouse.h文件代码
:class AFX_EXT_CLASS Cmousehook:public CObject
{
public:
Cmousehook();
//钩子类的构造函数
~Cmousehook();
//钩子类的析构函数
BOOL starthook(HWND hWnd);
//安装钩子函数
BOOL stophook();
//卸载钩子函数
};
报错信息
:Deleting intermediate files and output files for project 'hookmouse - Win32 Debug'.
--------------------Configuration: hookmouse - Win32 Debug--------------------
Compiling resources...
Compiling...
StdAfx.cpp
Compiling...
hookmouse.cpp
mouse.cpp
f:\debug\hook\hookmouse\mouse.cpp(99) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Generating Code...
Error executing cl.exe.
hookmouse.dll - 1 error(s), 0 warning(s)
===========================================================================
谁帮我解决下谢谢各位前辈了!!
我用的是VC6.0++
改了希望你用你的编译器编译一下看可以通过没??
谢谢各位了一定给分
:#include "mouse.h"
#pragma data_seg("mydata")
HWND glhPrevTarWnd=NULL;
//上次鼠标所指的窗口句柄
HWND glhDisplayWnd=NULL;
//显示目标窗口标题编辑框的句柄
HHOOK glhHook=NULL;
//安装的鼠标钩子句
HINSTANCE glhInstance=NULL;
//DLL实例句
#pragma data_seg()
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
//如果使用lpReserved参数则删除下面这行
UNREFERENCED_PARAMETER(lpReserved);
if(dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("MOUSEHOOK.DLL Initializing!\n");
//扩展DLL仅初始化一次
if (!AfxInitExtensionModule(MousehookDLL, hInstance))
return 0;
new CDynLinkLibrary(MousehookDLL);
//把DLL加入动态MFC类库中
glhInstance=hInstance;
//插入保存DLL实例句柄
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("MOUSEHOOK.DLL Terminating!\n");
//终止这个链接库前调用它
AfxTermExtensionModule(MousehookDLL);
}
return 1;
}
Cmousehook::Cmousehook()
//类构造函数
{
}
Cmousehook::~Cmousehook()
//类析构函数
{
stophook();
}
BOOL Cmousehook::starthook(HWND hWnd)
//安装钩子并设定接收显示窗口句柄
{
BOOL bResult=FALSE;
glhHook=SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);
if(glhHook!=NULL)
bResult=TRUE;
glhDisplayWnd=hWnd;
//设置显示目标窗口标题编辑框的句柄
return bResult;
}
BOOL Cmousehook::stophook()
//卸载钩子
{
BOOL bResult=FALSE;
if(glhHook)
{
bResult= UnhookWindowsHookEx(glhHook);
if(bResult)
{
glhPrevTarWnd=NULL;
glhDisplayWnd=NULL;//清变量
glhHook=NULL;
}
}
return bResult;
}
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *)lparam;
if (nCode>=0)
{
HWND glhTargetWnd=pMouseHook->hwnd;
//取目标窗口句柄
HWND ParentWnd=glhTargetWnd;
while (ParentWnd !=NULL)
{
glhTargetWnd=ParentWnd;
ParentWnd=GetParent(glhTargetWnd);
//取应用程序主窗口句柄
}
if(glhTargetWnd!=glhPrevTarWnd)
{
char szCaption[100];
GetWindowText(glhTargetWnd,szCaption,100);
//取目标窗口标题
if(IsWindow(glhDisplayWnd))
SendMessage(glhDisplayWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption);
glhPrevTarWnd=glhTargetWnd;
//保存目标窗口
}
}
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}
mouse.h文件代码
:class AFX_EXT_CLASS Cmousehook:public CObject
{
public:
Cmousehook();
//钩子类的构造函数
~Cmousehook();
//钩子类的析构函数
BOOL starthook(HWND hWnd);
//安装钩子函数
BOOL stophook();
//卸载钩子函数
};
报错信息
:Deleting intermediate files and output files for project 'hookmouse - Win32 Debug'.
--------------------Configuration: hookmouse - Win32 Debug--------------------
Compiling resources...
Compiling...
StdAfx.cpp
Compiling...
hookmouse.cpp
mouse.cpp
f:\debug\hook\hookmouse\mouse.cpp(99) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Generating Code...
Error executing cl.exe.
hookmouse.dll - 1 error(s), 0 warning(s)
===========================================================================
谁帮我解决下谢谢各位前辈了!!
我用的是VC6.0++
改了希望你用你的编译器编译一下看可以通过没??
谢谢各位了一定给分
...全文
相关推荐
易语言钩子DLL注入
易语言提供了创建DLL的接口和函数,开发者可以使用这些工具生成符合规范的DLL。2. 设置钩子:在DLL中定义一个函数作为钩子处理程序,然后在目标进程中设置相应类型的钩子。
钩子DLL源码
综上所述,“钩子DLL源码”涉及的是Windows编程的核心概念,包括钩子机制、DLL注入、系统API的使用以及安全实践。
键盘钩子DLL
这个示例可能演示了如何创建、安装、使用和卸载键盘钩子DLL,以及如何在VC++项目中集成和调用这些功能。总结来说,键盘钩子DLL是通过DLL和Windows钩子机制实现的键盘事件捕获技术。
MFC 调用全局钩子DLL
在这个场景中,我们将探讨如何使用MFC调用全局钩子DLL。首先,全局钩子是通过创建一个动态链接库(DLL)实现的,这个DLL包含一个或多个钩子函数。
Dll.rar_DLL 钩子_delphi dll_delphi 钩子_dll_钩子
在标题和描述中提到的"Dll.rar_DLL 钩子_delphi dll_delphi 钩子_dll_钩子",主要涉及到的是DLL中的一个特殊技术——钩子(Hook)。


进程/线程/DLL
