有关钩子的DLL帮看看

ifineedhelp 2007-02-06 08:50:23
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++
改了希望你用你的编译器编译一下看可以通过没??
谢谢各位了一定给分
...全文
258 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
linuxpgy 2007-02-06
  • 打赏
  • 举报
回复
http://pgy12345.googlepages.com/projectsetting
wangk 2007-02-06
  • 打赏
  • 举报
回复
在第一行加上
#include "stdafx.h"
ifineedhelp 2007-02-06
  • 打赏
  • 举报
回复
没有DLL???
syy64 2007-02-06
  • 打赏
  • 举报
回复
没有DLL,无法编译。
ifineedhelp 2007-02-06
  • 打赏
  • 举报
回复
TO:syy64(太平洋) ( ) 信誉:145 Blog
我抄人家的代码的。。那个{}也比对了吧???
不知道你的编译通过了没?
syy64 2007-02-06
  • 打赏
  • 举报
回复
#pragma data_seg()为啥有两个?
syy64 2007-02-06
  • 打赏
  • 举报
回复
检查一下 { } 是否配对?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧