写系统钩子代码问题?

a294447011294447011 2008-04-28 09:24:29
我用VB做了一窗体,标题为"钩子测试"
请师傅帮帮忙!看看我以下的代码错误在什么地方?是什么错误?为什么"#include "stdafx.h""这句错误啊?
错误提示是:"c:\documents and settings\administrator\桌面\新建文件夹\钩子测试\钩子测试.cpp(5) : fatal error C1083: Cannot open precompiled header file: 'Debug/钩子测试.pch': No such file or directory
执行 cl.exe 时出错."
=========================================================================
我的全部代码如下:
// 钩子测试.cpp : Defines the entry point for the DLL application.
//
#include <iostream.h>
#include <Windows.h>
#include "stdafx.h"
#include <stdlib.h>
HWND m_hWnd;//窗口的句柄
HHOOK m_hHook;//钩子的句柄
DWORD m_ProcessId;//进程pid
HINSTANCE m_hinstDll;//dll的句柄

//卸载钩子
extern "C" BOOL _declspec(dllexport) UninstallRegHook()//输出卸在钩子函数
{
return(UnhookWindowsHookEx(m_hHook));
}

//钩子函数
LRESULT WINAPI Hook(int nCode,WPARAM wParam,LPARAM lParam)//空的钩子函数
{
SendMessage(m_hWnd,WM_COPYDATA,0,100);
return(CallNextHookEx(m_hHook,nCode,wParam,lParam));//执行钩子链表所指的下一个钩子子程
}

//安装API钩子
extern "C" BOOL _declspec(dllexport) InstallRegHook(LPCTSTR strCheck)
{
m_hHook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)Hook,m_hinstDll,0);//把一个应用程序定义的钩子子程(这里是函数Hook)安装到钩子链表中,WH_GETMESSAGE是钩子的类型,m_hinstDll是本dll的句柄,就是入口函数的第一个参数
if (!m_hHook)
{
MessageBoxA(NULL,"安装钩子失败","失败",MB_OK);
return FALSE;
}
return TRUE;
}
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
m_hinstDll=hInstance;
if (dwReason == DLL_PROCESS_ATTACH)
{
m_hWnd=FindWindow(NULL,"钩子测试");//获取窗口标题为"钩子测试"的句柄
if (!m_hWnd)
return FALSE;
GetWindowThreadProcessId(m_hWnd,&m_ProcessId);//获取窗口标题为"钩子测试"的进程pid
}
return TRUE;
}

...全文
104 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
birchlin 2008-06-19
  • 打赏
  • 举报
回复
斑竹还天天看每个人的回复吗? 这也太厉害了!

不过,要是广告,确实该删除!
cryingzgz 2008-06-19
  • 打赏
  • 举报
回复
广告呗~
回复内容太短了!
  • 打赏
  • 举报
回复
被版主为什么删除了回复??也许大犬的回复对我有帮助!!
  • 打赏
  • 举报
回复
高看我了!
yuzl32 2008-06-14
  • 打赏
  • 举报
回复

//Client.cpp
#include <Windows.h>
//#include "stdafx.h"

HWND m_hWnd;//窗口的句柄
HHOOK m_hHook;//钩子的句柄
DWORD m_ProcessId;//进程pid
HINSTANCE m_hinstDll;//dll的句柄

//卸载钩子
extern "C" BOOL _declspec(dllexport) UninstallRegHook()//输出卸在钩子函数
{
return(UnhookWindowsHookEx(m_hHook));
}

//钩子函数
LRESULT WINAPI Hook(int nCode,WPARAM wParam,LPARAM lParam)//空的钩子函数
{
SendMessage(m_hWnd,WM_COPYDATA,0,100);

return(CallNextHookEx(m_hHook,nCode,wParam,lParam));//执行钩子链表所指的下一个钩子子程
}

//安装API钩子
extern "C" BOOL _declspec(dllexport) InstallRegHook(LPCTSTR strCheck)
{
m_hHook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)Hook,m_hinstDll,0);//把一个应用程序定义的钩子子程(这里是函数Hook)安装到钩子链表中,WH_GETMESSAGE是钩子的类型,m_hinstDll是本dll的句柄,就是入口函数的第一个参数

if (!m_hHook)
{
MessageBoxA(NULL,"安装钩子失败","失败",MB_OK);
return FALSE;
}

return TRUE;
}

BOOL WINAPI DllMain( HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
m_hinstDll = hModule;
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
m_hWnd=FindWindow(NULL,"钩子测试");//获取窗口标题为"钩子测试"的句柄

if (!m_hWnd)
return FALSE;

GetWindowThreadProcessId(m_hWnd,&m_ProcessId);//获取窗口标题为"钩子测试"的进程pid
}
return TRUE;
}

E:\>cl /LD Client.cpp User32.lib
/out:Client.dll
/dll
/implib:Client.lib
Client.obj
User32.lib
正在创建库 Client.lib 和对象 Client.exp


PS:楼主不要干坏事哦.. 多好的前途啊....
  • 打赏
  • 举报
回复
没有回答正确的!!
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
没遇到过这种情况.
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
接分先!
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
什么呀
  • 打赏
  • 举报
回复
去掉了 啊!
还是错误!在入口函数末尾没有代码处错误!!!!????
错误提示是:"c:\documents and settings\administrator\桌面\钩子测试\钩子测试\钩子测试.cpp(51) : fatal error C1010: unexpected end of file while looking for precompiled header directive
"
51365133 2008-04-28
  • 打赏
  • 举报
回复
去掉了,估计就可以了.
iu_81 2008-04-28
  • 打赏
  • 举报
回复
去掉#include "stdafx.h"

64,692

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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