关于鼠标钩子的问题,如何获得鼠标回调函数中的消息wParam!

bt44444444 2007-08-21 01:22:56
写了个 钩子
LRESULT CALLBACK MouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
)
{
MOUSEHOOKSTRUCT *mouse;
mouse=(MOUSEHOOKSTRUCT*)lParam;
char all[200];
sprintf(all,"鼠标%d x:%d y:%d",wParam,mouse->pt.x,mouse->pt.y);
FILE *file=fopen("mouse.txt","a");
fwrite(all,1,strlen(all),file);
fclose(file);
return 0;
}
一开始用的是
sprintf(all,"鼠标%s x:%d y:%d",wParam,mouse->pt.x,mouse->pt.y);
结果显示
鼠标(null) x:701 y:275
后来改
sprintf(all,"鼠标%d x:%d y:%d",wParam,mouse->pt.x,mouse->pt.y);
结果是
鼠标512 x:701 y:275鼠标512 x:704 y:276鼠标512 x:705 y:276鼠标
我如何知道512 是单急 双急 左急还是右击 !!!
...全文
294 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bt44444444 2007-08-21
  • 打赏
  • 举报
回复
结果有问题啊!!
bt44444444 2007-08-21
  • 打赏
  • 举报
回复
LRESULT CALLBACK MouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
)
{
MOUSEHOOKSTRUCT *mouse;
mouse=(MOUSEHOOKSTRUCT*)lParam;
char all[200],message[9];
switch(wParam)
{
case WM_LBUTTONDOWN: strcpy(message, "左击");
case WM_LBUTTONDBLCLK: strcpy(message, "左键双击");
case WM_RBUTTONDOWN: strcpy(message, "右击");
case WM_RBUTTONDBLCLK: strcpy(message, "右键双击");
case WM_MOUSEMOVE: strcpy(message,"鼠标移动");
}
sprintf(all,"鼠标%s x:%d y:%d",message,mouse->pt.x,mouse->pt.y);
FILE *file=fopen("mouse.txt","a");
fwrite(all,1,strlen(all),file);
fclose(file);
return 0;
}

鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫?x:443 y:202鼠标鼠标移动 x:438 y:189鼠标鼠标移动 x:438 y:189鼠标鼠标移动 x:438 y:189鼠标鼠标移动 x:439 y:189鼠标鼠标移动 x:439 y:190鼠标鼠标移动 x:439 y:191鼠标鼠标移动 x:439 y:192鼠标鼠标移动 x:439 y:193鼠标鼠标移动 x:440 y:193鼠标鼠标移动 x:440 y:194鼠标鼠标移动 x:440 y:195鼠标鼠标移动 x:440 y:196鼠标鼠标移动 x:441 y:197鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫烫烫烫鼠标烫烫烫?x:442 y:198
bt44444444 2007-08-21
  • 打赏
  • 举报
回复
LRESULT CALLBACK MouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
)
{
MOUSEHOOKSTRUCT *mouse;
mouse=(MOUSEHOOKSTRUCT*)lParam;
char all[200],message[9];
switch(wParam)
{
case WM_LBUTTONDOWN: message[9]="左击";
case WM_LBUTTONDBLCLK: message[9]="左键双击";
case WM_RBUTTONDOWN: message[9]="右击";
case WM_RBUTTONDBLCLK: message[9]="右键双击";
case WM_MOUSEMOVE: message[9]="鼠标移动";
}
sprintf(all,"鼠标%s x:%d y:%d",message,mouse->pt.x,mouse->pt.y);
FILE *file=fopen("mouse.txt","a");
fwrite(all,1,strlen(all),file);
fclose(file);
return 0;
}

E:\vc code\1\Hook\Hook.cpp(17) : error C2440: '=' : cannot convert from 'char [5]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
E:\vc code\1\Hook\Hook.cpp(18) : error C2440: '=' : cannot convert from 'char [9]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
E:\vc code\1\Hook\Hook.cpp(19) : error C2440: '=' : cannot convert from 'char [5]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
E:\vc code\1\Hook\Hook.cpp(20) : error C2440: '=' : cannot convert from 'char [9]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
E:\vc code\1\Hook\Hook.cpp(21) : error C2440: '=' : cannot convert from 'char [9]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
为啥不对,字符不能=字符
subchap 2007-08-21
  • 打赏
  • 举报
回复
可以与以下消息进行比较:
WM_LBUTTONDOWN 左击
WM_LBUTTONDBLCLK 左键双击
WM_RBUTTONDOWN 右击
WM_RBUTTONDBLCLK 右键双击
比如
if(wParam==WM_LBUTTONDOWN) ...
你得到的512是鼠标移动的消息(WM_MOUSEMOVE)。

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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