实在没办法了

小白在此 2014-11-15 11:45:22
写了个dll文件,想实现消息钩子,但是遇到一个奇葩错误,如图

// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"
#include <windows.h>
#include <WinUser.h>

#pragma data_seg("shareddata")
HHOOK sharedwnd=NULL;//共享数据
#pragma data_seg()

LRESULT CALLBACK MessageProc(int nCode,WPARAM wparam,LPARAM lparam);
BOOL APIENTRY DllMain(HMODULE /* hModule */, DWORD ul_reason_for_call, LPVOID /* lpReserved */)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
sharedwnd =SetWindowsHookEx(WH_CALLWNDPROC,MessageProc,NULL,NULL);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:

break;
}
return TRUE;
}

LRESULT CALLBACK MessageProc(int nCode,WPARAM wparam,LPARAM lparam)
{

}

但问题是vs2012一直报未定义标识符SetWindowsHookEx(),但我明明加了头文件winuser.h啊,真的是没办法了
...全文
228 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白在此 2014-11-16
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
删掉#include <WinUser.h> 或改为#include <winuser.h>
不行,但我找到解决办法了,我不直接新建dll工程,而是建win32控制台工程,然后选择dll,这样就不会出现这个问题了,也不知是不是vs的bug啊
小白在此 2014-11-16
  • 打赏
  • 举报
回复
引用 1 楼 u010005508 的回复:
函数名前面加个全局作用越标示符(::)试一下
不行,但我找到解决办法了,我不直接新建dll工程,而是建win32控制台工程,然后选择dll,这样就不会出现这个问题了
赵4老师 2014-11-16
  • 打赏
  • 举报
回复
删掉#include <WinUser.h> 或改为#include <winuser.h>
highnewrain 2014-11-16
  • 打赏
  • 举报
回复
函数名前面加个全局作用越标示符(::)试一下

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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