首页
社区
课程
招聘
[原创]为答谢看雪论坛,放出QQ2008的自动聊天精灵delphi源码
发表于: 2008-3-5 07:37 14959

[原创]为答谢看雪论坛,放出QQ2008的自动聊天精灵delphi源码

2008-3-5 07:37
14959
在xpsp2+delphi7下正式通过编译,为了防止有朋友搞破坏,故没有没出无窗口SDK代码,免杀和7种自启动还有远程自动控制和特定人特制视频也已成功,但暂不放出,主要针对QQ2008.同时兼容QQ07,希望看雪论坛能越办越好.

//俏狐出品 QQ:86074731 最后修改于2008年3月
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls,Registry, ExtDlgs, bsSkinShellCtrls,
  BusinessSkinForm, bsSkinBoxCtrls, bsSkinCtrls;

type
TTform1 = class(TForm)
    GroupBox1: TGroupBox;
    Bevel1: TBevel;
    Label2: TLabel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Bevel4: TBevel;
    FindBtn: TSpeedButton;
    Image1: TImage;
    SendBtn: TSpeedButton;
    LoadBtn: TSpeedButton;
    loaddialog1: TOpenDialog;
    ListBox1: TListBox;
    bsBusinessSkinForm1: TbsBusinessSkinForm;
    bsSkinOpenDialog1: TbsSkinOpenDialog;
    AoutBtn: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure FindBtnClick(Sender: TObject);
    procedure LoadBtnClick(Sender: TObject);
    procedure SendBtnClick(Sender: TObject);
    procedure AoutBtnClick(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Tform1: TTform1;

implementation
{$R *.dfm}
//定义一组全程变量
const
   WinCaption07:string='聊天中';
   WinCaption08:string='交谈中';
var
  x:integer;
  TextBoxNum:shortint; //QQ输入框是第几个对话框
  SendButtonNum:shortint; //发送按钮是第几个按钮
  QQInputBoxHandle,SendButtonHandle:HWND;//发送按钮和输入框句柄
  StopSend:boolean;
//=====================延时时程序===================
procedure Delay(msecs:integer);
var
FirstTickCount:longint;
begin
FirstTickCount:=GetTickCount;
repeat
    if STopSend then  exit ;
    Application.ProcessMessages;
until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;
//=====================得到窗口内容===================
function GetWindowStr(Wnd: HWND): String;
var
Len: Integer;
begin
Len := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
SetLength(Result, Len + 1);
SendMessage(Wnd, WM_GETTEXT, Length(Result), Longint(@Result[1]));
end;
//=====================得到所属类===================
function GetWindowClass(Wnd: HWND): String;
begin
SetLength(Result, 65);
GetClassName(Wnd, @Result[1], 65);
end;

//=====================查找子控件===================
function EnumChildProc(Wnd: HWND; lParam: LPARAM): Boolean; stdcall;
var
S, C: String;
begin
  S := GetWindowStr(Wnd);
  C := GetWindowClass(Wnd);
     X:=X+1;

    if  Pos('RichEdit', C) =1  then
      begin
        TextBoxNum:=TextBoxNum+1;
        if  TextBoxNum =3 then QQInputBoxHandle :=Wnd;
      end;
    if (pos('发送',S) =1) and (Pos('Button', C) =1) then
      begin
        if  SendButtonNum=2 then  SendButtonHandle:=wnd;
        SendButtonNum:= SendButtonNum+1;
      end;
Result := True;
end;
//=====================定义一个回调函数===================

function EnumWindowsProc(Wnd: HWND; lParam: LPARAM): Boolean; stdcall;
var
S, C: String;
begin
S := GetWindowStr(Wnd);
C := GetWindowClass(Wnd);
//看是07和08版QQ的标题吗?
if (Pos(WinCaption07, S) >0) or (Pos(WinCaption08, S) >0) then
  begin  //如果找到QQ窗体则找出所有控件
    if not EnumChildWindows(Wnd, @EnumChildProc, lParam) then ;
    Result := False;
  end;
Result := True;
end;
//=====================主表单初始化===================
procedure TTform1.FormCreate(Sender: TObject);
begin
  //初始化表单和列表框颜色
  Tform1.color:=tcolor(rgb(236,233,216));
  ListBox1.color:=Tcolor(rgb(96,96,97));
end;

//=====================查找QQ主窗体===================
procedure TTform1.FindBtnClick(Sender: TObject);
begin
  X:=0;
  TextBoxNum:=1;
  SendButtonNum:=1;

  try
  if not EnumWindows(@EnumWindowsProc, Integer(Pointer(ListBox1))) then ;
  finally
    if X = 0 then messagebox( Tform1.Handle,'不能找到QQ发送窗口!','错误',MB_OK+MB_DEFBUTTON1 +MB_ICONHAND);  end;
  listbox1.ItemIndex:=0;
  if (QQInputBoxHandle<>0) and (SendButtonHandle <>0) then SendBtn.Enabled :=True;
end;

//=====================装入聊天记录===================
procedure TTform1.LoadBtnClick(Sender: TObject);
begin
if bsSkinOpenDialog1.execute then
   begin
     ListBox1.Clear;
     ListBox1.Items.LoadFromFile(bsSkinOpenDialog1.filename);
   end;
end;

//=====================可中断的连续发送================
procedure TTform1.SendBtnClick(Sender: TObject);
var
  SendTxt:string;
begin

  StopSend := False; //把是否安暂停设为不停
  if SendBtn.Caption='发 送' then
    begin
      SendBtn.Caption :='暂 停';
    end
  else
    begin //如果是暂停按钮按下
      SendBtn.Caption:='发 送';
      StopSend:=True;
    end;

  while (listbox1.ItemIndex<ListBox1.Items.Count-1) and (not StopSend)  do
    begin
       listbox1.ItemIndex:=listbox1.ItemIndex+1;

       //如果导入的文本文件里有空行,则跳过空行
       while ListBox1.Items.strings[listbox1.ItemIndex]='' do listbox1.ItemIndex:=listbox1.ItemIndex+1;

       if STopSend then   exit; //如果暂停键按下
       SendTxt :=ListBox1.Items.strings[listbox1.ItemIndex];
       SendMessage(QQInputBoxHandle,EM_REPLACESEL,180,Integer(Pchar(SendTxt)));
       delay(300);
       SendMessage(SendButtonHandle,BM_CLICK,0,0);
    end;
end;

procedure TTform1.AoutBtnClick(Sender: TObject);
begin
  messagebox( Tform1.Handle,'为了梦想的天空而努力!','关于',MB_OK+MB_DEFBUTTON1 +MB_ICONQUESTION );
end;

end.

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 7
支持
分享
最新回复 (28)
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
能加上 人工智能吗? 根据对方内容 模糊匹配回复内容?
2008-3-5 08:03
0
雪    币: 1889
活跃值: (183)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
当然可以,我这就有现成的源码,我自己写的,虽然水平很低,但实现了,如对方说你好,它会回答你好,对方说你怎么不说话了,它会说,等会儿,我接个电话,我在忙呢等,还有很多低层低码攻防代码,但我不想扩散,我想让朋友们了解的只是QQ2008对话框的捕获方法,但不是其它 ,当然这些代码你也可以自己写
2008-3-5 08:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好象宣传XX功的 会用自动聊天的QQ宣传
2008-3-5 08:27
0
雪    币: 216
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
牛人..........
2008-3-5 09:01
0
雪    币: 107
活跃值: (1628)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
6
有VC版本的吗?我没学DELPHI
2008-3-5 09:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有源程序不吗?发上来试用一下
2008-3-5 09:38
0
雪    币: 437
活跃值: (273)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
8
2楼想做个自动聊天机器人 = =
2008-3-5 11:16
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
9
我还以为很多代码呢
2008-3-5 11:23
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
"多低层低码攻防代码" 是什么意思啊?
2008-3-5 14:21
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
LZ有没有研究过改变发送内容的格式
2008-3-6 09:40
0
雪    币: 1889
活跃值: (183)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
我们这里只研究逆向和破解,我不想违规.在这儿不讨论黑客技术,我也不想把太多的破坏性东西扩展开来.
2008-3-6 11:07
0
雪    币: 1889
活跃值: (183)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
9楼的兄弟如果以代码多少论优劣,那我无话可说.

如果论大头,现在新式的核武决比不上原来的大,但精确度和杀伤力远比远来的大很多;相对论、核子理论以及激光学理论专著,加在一起也没有大的网论色情小说长,但他却从质上改变了全人类。
2008-3-6 11:11
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
14
自动聊天部分用什么模型?

隐马尔科夫 OR 贝叶斯网络?

可以通过什么途径得到海量对话数据集?

语义分析方法?如何建立索引?

我对自动聊天的实现感兴趣。自动聊天无所谓~~~
2008-3-6 12:41
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cxd
15
没人说块头大就是代码牛,还相对论,核子呢!

看你的标题当然会认为会有不少代码,你认为就你那几行搜索窗口的代码就能自动 AND 精灵
2008-3-7 05:15
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cxd
16
其实俺也很想知道这篇文在那里!
2008-3-7 05:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
免杀和7种自启动还有远程自动控制和特定人特制视频也已成功,但暂不放出,主要针对QQ2008.同时兼容QQ07....

明显是AD  

这个代码和N年前发出的QQ尾巴代码区别很大吗

引用楼上的 其实俺也很想知道这篇文精在那里!???
2008-3-8 00:06
0
雪    币: 227
活跃值: (4815)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
18
其实俺也很想知道这篇文精在那里!
2008-3-8 07:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
虽然我不是太懂
但你是个牛人
2008-3-8 09:20
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
20
这个。~~嘿嘿~~
没放出的有点难度
2008-3-9 23:36
0
雪    币: 268
活跃值: (40)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
21
先顶,后看。。。
2008-3-10 14:51
0
雪    币: 402
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
笨笨雄说的东西的确是应该最关心的问题!
2008-3-15 06:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
呵呵 是呀 到底精在哪里 看了半天
2008-3-16 17:16
0
雪    币: 627
活跃值: (1891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
牛皮吹大了!
2008-3-18 11:16
0
雪    币: 215
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
25
20楼的太绝了..
2008-3-27 01:36
0
游客
登录 | 注册 方可回帖
返回
//