QQ消息发送器

news/2024/11/21 1:25:09/

闲来无聊之作品,愿与大家探讨交流,共同进步!

//取QQ版本信息函数

function ReadQQRegInf: boolean;
Var
  regRegistry : TRegistry;
begin
  result := True;
  regRegistry := TRegistry.Create;
  try
    try
      regRegistry.RootKey := HKEY_LOCAL_MACHINE;
      if regregistry.OpenKey('/SOFTWARE/Tencent/QQ',true) then
      begin
        gsQQInstall := regregistry.ReadString('Install');
        gsQQVersion := regregistry.ReadString('version');
      end;
      regregistry.CloseKey;
    except
      result := False;
    end;
  finally
    regregistry.Free;
  end;
end;

//发送事件处理

procedure TFrmMain.btnSendClick(Sender: TObject);
var
  h, h2, hChild, hChild2, hBtn: THandle;
  Buf: array[0..1024] of Char;
  i: integer;
  s, sPwd: string;
begin


  s := memosendMeg.Text;
  h := FindWindow(nil, pchar('与 '+cbFName.text+' 聊天中'));
  RichEdit1.Lines.Add(IntToHex(h, 8));

  if h=0 then
  begin
    Application.MessageBox('请确认与好友的聊天界面已打开,并进入【消息模式】!',
                           '错误', MB_OK+MB_ICONWARNING);
    exit;
  end;

  hChild := FindWindowEx(h, 0, nil, '');
  RichEdit1.Lines.Add(IntToHex(hChild, 8));

  hChild := FindWindowEx(h, hChild, nil, '');
  RichEdit1.Lines.Add(IntToHex(hChild, 8));

  hChild := FindWindowEx(h, hChild, nil, '');
  RichEdit1.Lines.Add(IntToHex(hChild, 8));

  hChild := FindWindowEx(h, hChild, nil, '');
  RichEdit1.Lines.Add(IntToHex(hChild, 8));

  h := hChild;

  hChild2 := FindWindowEx(h, 0, nil, '');
  RichEdit1.Lines.Add(IntToHex(hChild2, 8));

  hChild2 := FindWindowEx(h, hChild2, nil, '');
  RichEdit1.Lines.Add(IntToHex(hChild2, 8));

  //QQ2006官方正式版V06.0.200.370以下版本处理
  if StrtoFloat(gsQQVersion)<1595.370 then
  begin
    hChild2 := FindWindowEx(h, hChild2, nil, '');
    RichEdit1.Lines.Add(IntToHex(hChild2, 8));
  end;

  //如果是珊瑚虫版可以取到ip地址信息
  h2 := hChild2;

  hChild2:=GetWindow(h2,gw_hwndfirst);
  RichEdit1.Lines.Add(IntToHex(hChild2, 8));

  SendMessage(hChild2, WM_GETTEXT, 1024, Integer(@Buf));
  RichEdit1.Lines.Add(Buf);

  //取QQ号码信息
  hChild2 := FindWindowEx(h, h2, nil, Buf);
  //QQ2007Beta1 V07.0.101.162以上版本处理
  if StrtoFloat(gsQQVersion)>=1631.160 then
  begin
    hChild2 := FindWindowEx(h, h2, nil, '');
    hChild2 := FindWindowEx(h, h2, nil, '');
  end;
  h2 := GetWindow(hChild2, GW_CHILD);
  hChild2:=GetWindow(h2,gw_hwndfirst);
  RichEdit1.Lines.Add(IntToHex(hChild2, 8));

  SendMessage(hChild2, WM_GETTEXT, 1024, Integer(@Buf));
  RichEdit1.Lines.Add(Buf);

  if pos('(XXXXXXX)', Buf) > 0 then
  begin
    //这里对想要屏蔽的QQ号处理

    exit;
  end;

  //"发送"按钮句柄
  hBtn := FindWindowEx(h, 0, 'Button', '发送(S)');
  RichEdit1.Lines.Add(IntToHex(hBtn, 8));

  hChild := FindWindowEx(h, hBtn, 'AfxWnd42', '');
  RichEdit1.Lines.Add(IntToHex(hChild, 8));

  h := hChild;
  //QQ2006官方正式版V06.0.200.370以上版本处理
  if StrtoFloat(gsQQVersion)>=1595.370 then
    hChild := FindWindowEx(h, 0, 'RichEdit20A', '')
  else
    hChild := FindWindowEx(h, 0, 'RICHEDIT', '');  //默认处理

  RichEdit1.Lines.Add(IntToHex(hChild, 8));

   //向输入框中加入尾巴
   SendMessage(hChild, EM_REPLACESEL, 1, integer(pchar(s)));
   SendMessage(hBtn, WM_LBUTTONDOWN, 0, 0);
   SendMessage(hBtn, WM_LBUTTONUP, 0, 0);
end; 


http://www.ppmy.cn/news/803558.html

相关文章

如何解决PostgreSQL执行语句长时间卡着不动,不报错也不执行的问题?

1 问题现象 执行SQL语句&#xff0c;卡着不动&#xff0c;不成功也不执行&#xff0c;就像挂住了一样。 truncate table simple; 2 原因分析 一般来说&#xff0c;语句呈现卡着的状态&#xff0c;主要会是两种原因比较多&#xff0c; 原因1&#xff1a;SQL语句是一个耗时操…

java获取qq_QQ中,获取消息

首先创建一个Message类,先设置三个属性,发送方、接收方、消息内容,代表所有的属性。 Message: Messagepackage com.dr.QQ; public class Message {private String from; private String to; private String content; public String getFrom() {return from; } public void …

游戏.消息管理器

/**************************************************WinMain.cpp堆栈式的函数管理器http://blog.csdn.net/chinayaosir**************************************************///0.头文件#include <windows.h>#include <stdio.h>//1.管理器类定义class cProcessMan…

QQ管理器

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient;namespace QQ信息管理系统 {class UserManager{public void Login(){int count 0;do{string strUserName string.Empty;//初始化管…

android 消息管理器,腾讯TIM消息管理器在哪 腾讯TIM打开消息管理器的教程

腾讯TIM最新简介 tim最新版主要是在“日程”方面进行了改进&#xff0c;比如在聊天界面点击日程时&#xff0c;可以新建日程和分享我的日程、日程界面支持周视图展示等。另外&#xff0c;更新还精简代码&#xff0c;缩减安装包大小&#xff0c;屏蔽了送礼物等功能和动画。 腾讯…

Debezium日常分享系列之:Debezium 信号发送和通知 - 第 1 部分

Debezium日常分享系列之&#xff1a;Debezium 信号发送和通知 - 第 1 部分 一、背景二、Debezium 中的信号发送三、Debezium 中的通知四、结论 一、背景 本系列文章将介绍 Debezium 提供的信号和通知功能&#xff0c;并讨论与平台交互的可用渠道。在本系列的后续部分中&#x…

学习推荐

编程类 类Unix系统的编程书籍里&#xff0c;最经典的莫过于简称为APUE的《Advanced Programming in the UNIX Environment》&#xff08;中译名是“Unix环境高级编程”&#xff09;&#xff0c;这本书被广大Unix程序员&#xff08;包括Linux&#xff09;捧为“圣经”。借用葛大…

js的数组解构

数组解构&#xff08;Array Destructuring&#xff09;时&#xff0c;有几个重要的概念需要了解&#xff1a; 基本数组解构&#xff1a; 可以使用方括号&#xff08;[]&#xff09;来定义解构模式。解构模式将数组中的值分配给对应的变量。解构是基于位置的&#xff0c;变量的…