之前网上看了QQ尾巴的源码,就自己试运行了一下,但是无反应,后上网一查,QQ在2005版后就禁止,SendMessage给发送框,后来在一BBS看到一回帖,说只要把SendMessage中的MSG参数换成EM_ReplaceSel就能正常发送(测试QQ版本QQ2008Beta1_BlessingKB1)

{ QQ尾巴  开启:SetHook 关闭:UnHook}
function SetHook:Boolean;stdcall;far; external 'TestDll.dll';
SetHook;

{ 生成TestDll.dLL文件 }
library TestDll;

uses
  SysUtils,Windows,Messages,
  Classes;
var
  dwThreadID:DWord;
  EventLog:Integer;
  hHook:Integer;
  recOK:Integer;
  hQQ : hwnd;
  note:hwnd;
 
procedure SetWndText(hWnd: HWND; Text: String);
Var
    //Ret:LongInt;
    mText:PChar;
    Buf:Integer;
begin
    GetMem(mText,Length(Text));
    StrCopy(mText,PChar(Text));
    try
        Buf:=LongInt(mText);
        SendMessage(hWnd,EM_ReplaceSel,0,Buf);
    finally
        FreeMem(mText,Length(Text));
    end;
end;
function GetWndText(hWnd: HWND): String;
Var
    Ret:LongInt;
    mText:PChar;
    Buf:Integer;
begin
    Ret:=SendMessage(hWnd,WM_GETTEXTLENGTH,0,0)+1;
    GetMem(mText,Ret);
    try
        Buf:=LongInt(mText);
        SendMessage(hWnd,WM_GETTEXT,Ret,Buf);
        Result:=StrPas(mText);
    finally
       FreeMem(mText,Ret);
    end;
end;

Function FindQQ:hwnd;
var
   hQQ    : hwnd;
   QQTitle: String;
begin
    Result :=0;
    //查找QQ
    hQQ :=  FindWindowEx(0,        //Parent
                         0,        //Child
                         '#32770', //窗口类名通过Spy++或者MiniSpy都可以查到
                         nil       //窗口Caption
                         );

//循环查找
  While   (hQQ <> 0)  do                   //and (hSend = 0)
  begin
    QQTitle := GetWndText(hQQ);
    if  (Pos('聊天中',QQTitle)>0) or
        (Pos('发送消息',QQTitle)>0) or
        (Pos('群',QQTitle)>0) then
    begin
      //  showMessage(QQTitle);
        result := hQQ;
        exit;
    end;
    //查找QQ
    hQQ :=  FindWindowEx(0,        //Parent
                         hQQ,        //Child
                         '#32770', //窗口类名通过Spy++或者MiniSpy都可以查到
                         nil       //窗口Caption
                         );
   end;
end;

function HookProc(iCode:Integer;wParam:wParam;lParam:lParam):LRESULT;stdcall;
var
 hChild:hwnd;
 hRichText:hwnd;
begin
  recOK:=1;
  Result:=0;
  if iCode < 0 then
    Result := CallNextHookEx(hHook,iCode,wParam,lParam)
  else if iCode = HC_SYSMODALON then
    recOK:=0
  else if iCode = HC_SYSMODALOFF then
    recOK:=1
  else if ((recOK>0) and (iCode = HC_ACTION)) then
  begin
    if ((wParam = VK_RETURN) and (GetAsyncKeyState(VK_CONTROL) < 0)) then
    begin
      hQQ := FindQQ;
      hChild := GetDlgItem(hQQ,0);     //发送窗口所在的子窗口
      hRichText  := GetDlgItem(GetDlgItem(hChild,0), 894);
      SetWndText(hRichText,' -- 哈哈,你中了QQ尾巴!');
    end;
    result:=CallNextHookEx(hHook,iCode,wParam,lParam);
  end;
end;

Function SetHook:Boolean;stdcall; export;
var
     dwThreadID:DWord;
     hQQ : hwnd;
begin
  EventLog:=0;
      hQQ := FindQQ;
      if hQQ=0 then exit;
     dwThreadID := GetWindowThreadProcessId(hQQ, dwThreadID);
  //建立键盘鼠标操作消息纪录链
  hHook:=SetwindowsHookEx(WH_KEYBOARD,HookProc,HInstance,dwThreadID);
end;

Function UnHook:Boolean;stdcall; export;
begin
    result:=UnhookWindowsHookEx(hHook);
end;
exports //DLL的输出函数
SetHook,UnHook;

begin
end.

delphi QQ尾巴源码相关推荐

  1. QQ红包源码 大转盘抽奖源码下载 微信红包源码

    简介: 源码开发语言:PHP+MYSQL 源码描述说明: QQ红包源码微信红包源码QQCPA/QQ推广 微信CPA/微信活动 注意:以上文件和文件夹均可直接删除,如需用到文件夹需要的功能,新建同名的目 ...

  2. 分享Delphi处理EXCEL源码

    分享Delphi处理EXCEL源码,源码如下: (*************************************************************************** ...

  3. [AYUI]QQ管家源码已经开源

    (0-50元 黑色字体     享受AY 1周的 ayui 技术问答) (50-100元 绿色字体 享受AY 15天的 ayui 技术问答) (100-150元 蓝色字体 享受AY 20天的 ayui ...

  4. 自定义微博小尾巴(源码+解析)

    前言: 自王思聪发布了那条小尾巴是 iPhone6 的微博后,  越来越多的人跟风, 把小尾巴改成了iPhone6. 但是, 没多久, 新浪就把原先的办法给和谐了.原先的办法很简单, 就是通过网页发布 ...

  5. Delphi 播放器[源码]

    Delphi 音乐播放器,支持桌面歌词.换肤.换颜色.歌词自动下载,Win7下支持小窗口预览,有些功能未完全完成,就如调整音量(懒得搞,但是可以听了,只写了一次性播放列表没得循环的).支持酷狗.QQ的 ...

  6. 仿qq邮箱源码程序_巧用小程序·云开发实现邮件发送功能丨实战

    先看效果图: 通过上面的日志,可以看出我们是158开头的邮箱给250开头的邮箱发送邮件,下面是成功接收到的邮件. 准备工作 1.qq邮箱一个 2.开通你的qq邮箱的授权码(会具体讲解) 3.注册自己的 ...

  7. qq纵横四海源码_【0基础】纵横中文网python爬虫实战

    原文在此~ [0基础]纵横中文网python爬虫实战​mp.weixin.qq.com 大家好,我是你们的机房老哥! 在粉丝群的日常交流中,爬虫是比较常见的话题.python最强大的功能之一也是爬虫. ...

  8. [delphi]修改indy源码后重新编译

    http://blog.csdn.net/nerdy/article/details/8702568 虽然indy有一身的毛病,但是一般情况下使用起来还是多方便的. 今天在做一个使用到indy的程序的 ...

  9. 仿qq邮箱源码程序_小伙子利用C++实现邮件程序发送和接收

    3个通过POP发送和接收邮件的VC++实例程序:三个实例分别如下: 1.pop3高级程序开发是一个能够从pop3服务器中检查所有邮件,并且可以查看邮件内容,也可以删除邮件但是没有实现附件的接收,使用时 ...

最新文章

  1. opencv3学习总结1
  2. Linux磁盘分区了解多少?Linux入门必看
  3. 【数据结构与算法】之深入解析“字符串转换整数 (atoi)”的求解思路和算法示例
  4. LeetCode 557. 反转字符串中的单词 III(栈)
  5. java两个数最大公约数和最小公倍数,java求两个数的最大公约数和最小公倍数
  6. 严蔚敏算法约瑟夫环_极客算法训练笔记(三),链表详细图解,别再逃避了朋友...
  7. 【bzoj 3595】: [Scoi2014]方伯伯的Oj
  8. 获取列表的最后一个元素
  9. 用 js判断 一个数是否是素数(质数)_小学数学知识点1~6年级汇总整理,收藏起来随时用!(下)...
  10. python json()是什么函数_python 处理 json 四个函数dumps、loads、dump、load的区别
  11. [BootStrap学习随笔] 起步、布局容器和栅格式布局
  12. pandas读取数据库,将结果使用matplotlib绘制成二维表格图片
  13. ShowWindow与UpdateWindow
  14. SpringBosent框架
  15. 没有大招的火山引擎,拿下70%大模型玩家
  16. Python实现base64编码文件转化为jpg/png/jpeg/格式图片
  17. 苹果微信多开_微信双开是什么?是不是需要两个手机号?
  18. 电源 LDO 低压差线性稳压电源
  19. Python使用pngquant实现批量压缩图片
  20. css针对IE单独设置样式

热门文章

  1. 在vue3中使用富文本编辑器WangEditor
  2. VSCode配置JAVA开发环境windows 2020
  3. postgresql字符串转数字
  4. Linux 解压 zip 分卷
  5. 海康相机SDK二次开发的一些报错和解决办法
  6. 改进费诺实现数据编码附MATLAB代码
  7. CentOS 7搭建PHP环境
  8. python knn预测_python机器学习之KNN预测QSAR生物浓缩类别
  9. Android 相机 导致OOM (Bitmap的尴尬)
  10. ALT在mysql中的含义_alt f4的功能是什么