用vc实现对qq发送按钮消息的截获

3 篇文章 0 订阅

       最近一直在想怎么对qq的发送消息进行截获,就是是说你在聊天窗口点发送按钮时,程序会将你这个消息截下来,那怎么实现呢,也不难,大家一定都知道hook吧,今天就用它了,不过用hook中比较特殊的wh_mouse_ll,这个是鼠标的低级全局钩子,无需远程加载代码,原理是把消息放到消息队列中等待读取.具体的大家可以上网查下,我先说下思路,就是程序运行时安装钩子,然后用一个消息循环进行等待,在钩子的回调函数里,我得到鼠标按下时所在窗口的句柄,然后判断是否是qq的发送按钮,最后发送一个消息让前面的消息循环结束,卸载钩子,程序结束.好了,废话不说了,看代码:

#include "stdio.h"
#include "windows.h"
HHOOK hook;

LRESULT CALLBACK mouse(int ncode,WPARAM w,LPARAM l){
 if (ncode>=0){

  if(w==WM_LBUTTONDOWN){
LPMOUSEHOOKSTRUCT m=(MOUSEHOOKSTRUCT FAR *) l;
HWND h=::WindowFromPoint(m->pt);
char text[20]={0};
::GetWindowText(h,text,20);
if(strstr(text,"发送(S)") && ::GetDlgCtrlID(h)==1918){
 printf("1/n");
 ::PostQuitMessage(0);
}
}
}
return ::CallNextHookEx(hook,ncode,w,l);
}

main(){
 hook=::SetWindowsHookEx(14,mouse,::GetModuleHandle(0),0);
MSG msg;

  while (GetMessage (&msg, NULL, 0, 0))

  {

  TranslateMessage (&msg);

  DispatchMessage (&msg);

  };
  UnhookWindowsHookEx (hook);
 
  return 0;

}

差不多搞定,顺便说下qq消息输入框屏蔽wm_gettext消息,怎么办呢,我的思路是写个dll,远程注入qq进程,在对qq的窗口进行子类化处理,具体的以后再说吧.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值