Unit1.pas
上传用户:jiansibo
上传日期:2015-07-04
资源大小:524k
文件大小:6k
源码类别:

破解

开发平台:

Delphi

  1. //此程序实现了不用加好友,直接向QQ号发送信息的功能。
  2. //不过QQ的服务器会限制次数,大家可以考虑用一系列(越多越好)的QQ号不断地切换来登陆,必要时可以
  3. //不断地连接和断开网络,变换IP来解决QQ服务器的限制。
  4. //传播或修改本程序,请保留原作者信息,谢谢!
  5. //世纪0769网址收藏站
  6. //网址:http://www.0769cn.com
  7. unit Unit1;
  8. interface
  9. uses
  10.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  11.   Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls,shellapi;
  12. type
  13.   TForm1 = class(TForm)
  14.     Button1: TButton;
  15.     Memo1: TMemo;
  16.     WebBrowser1: TWebBrowser;
  17.     Timer1: TTimer;
  18.     Memo2: TMemo;
  19.     Label11: TLabel;
  20.     procedure Button1Click(Sender: TObject);
  21.     function  GetQQcaption:string;
  22.     procedure Timer1Timer(Sender: TObject);
  23.     procedure SendMessages(m:string);
  24.     procedure WebBrowser1DocumentComplete(Sender: TObject;
  25.       const pDisp: IDispatch; var URL: OleVariant);
  26.     procedure FormCreate(Sender: TObject);
  27.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  28.     procedure Label11MouseMove(Sender: TObject; Shift: TShiftState; X,
  29.       Y: Integer);
  30.     procedure Label11Click(Sender: TObject);
  31.   private
  32.     { Private declarations }
  33.   public
  34.     { Public declarations }
  35.   end;
  36. var
  37.    Form1: TForm1;
  38.    msgs:string;
  39.    EditHandle,RichEditHandle: Integer;
  40.    captions:string;
  41.    Gi:integer;
  42. implementation
  43. {$R *.dfm}
  44. function Tform1.GetQQcaption:string;
  45.      var
  46.         hCurrentWindow: HWnd;
  47.         szText: array[0..254] of char;
  48.      begin
  49.         result:='';
  50.         hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
  51.         while hCurrentWindow <> 0 do
  52.         begin
  53.            if GetWindowText(hCurrentWindow, @szText, 255) > 0 then
  54.            if pos('会话中',StrPas(@szText))>0 then
  55.               result:=StrPas(@szText);
  56.            hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
  57.         end;
  58.      end;
  59.  {  GetClassName(hLastWin,szWindowText,SizeOf(szWindowText));
  60.   if szWindowText <>'#32770' then Exit;
  61.   szTextLength := SendMessage(hLastWin, WM_GETTEXT, MAX_PATH, Integer(@szWindowText[0]));
  62.   szWindowText[szTextLength] := #0;
  63.   if Pos('聊天中',szWindowText)>0 then
  64.   begin
  65.     QQName:=Copy(szWindowText,Pos(' ',szWindowText)+1,Pos('聊天中',szWindowText)-Pos(' ',szWindowText)-2);
  66.     hLastWin := FindWindowEx(hLastWin, THandle(nil),'#32770',nil); }
  67. function GetButtonHandle(hwnd: Integer; lparam: Longint):Boolean; stdcall;
  68. var
  69.   buffer: array[0..255] of Char;
  70.   buffer1: array[0..255] of Char;
  71. begin
  72.   Result := True;
  73.   GetClassName(hwnd,buffer,256);   //得到类名
  74.   if StrPas(Buffer)='Button' then
  75.   begin
  76.    GetWindowText(hwnd,buffer1,100);
  77.     if trim(buffer1)= captions then
  78.     begin
  79.       PInteger(lparam)^ := hwnd; //得到目标控件的Hwnd(句柄)
  80.       Result:=False;  //终止循环
  81.     end;
  82.   end;
  83. end;
  84. function GetRichEditHandle(hwnd: Integer; lparam: Longint):Boolean; stdcall;
  85. var
  86.   hLastWin,hButton : THandle;
  87.   szWindowText: array[0..MAX_PATH] of Char;
  88.   szTextLength: Integer;
  89.   QQName:String;
  90. begin
  91.    Result := True;
  92.     hButton:=0;
  93.     hLastWin :=FindWindowEx(GetForegroundWindow,hButton,'#32770',nil);
  94.     if hLastWin=0 then Exit;
  95.     hButton := FindWindowEx(hLastWin, THandle(nil),nil,'发送(&S)');
  96.     if hButton=0 then Exit;
  97.     hLastWin := FindWindowEx(hLastWin, THandle(nil),'AfxWnd42',nil);
  98.     if hLastWin=0 then Exit;
  99.     hLastWin := FindWindowEx(hLastWin, THandle(nil),'RICHEDIT',nil);
  100.     if hLastWin=0 then Exit;
  101.     msgs:=Form1.Memo1.text;
  102.     SendMessage(hLastWin,EM_REPLACESEL,180,Integer(Pchar(msgs)));
  103.     Result:=False;//终止循环
  104.   end;
  105. procedure Tform1.SendMessages(m:string);
  106. var
  107.   FButtonHandle,
  108.   ButtonHandle,
  109.   WinHandle:Integer;
  110. begin
  111.     WinHandle:=0;
  112.     WinHandle:=FindWindow(nil,pchar(form1.GetQQcaption));  //就是窗口的Caption
  113.     RichEditHandle:=WinHandle;
  114.     msgs:=m;
  115.     EnumChildWindows(RichEditHandle,@GetRichEditHandle,Integer(@RichEditHandle));
  116.     captions:='发送(&S)';
  117.     ButtonHandle:=WinHandle;
  118.     EnumChildWindows(ButtonHandle,@GetButtonHandle,Integer(@ButtonHandle));
  119.     FButtonHandle:=ButtonHandle;
  120.     SendMessage(FButtonHandle,WM_LBUTTONDOWN,0,0);
  121.     SendMessage(FButtonHandle,WM_LBUTTONUP,0,0);
  122.     SendMessage(FButtonHandle,WM_LBUTTONDOWN,0,0);
  123.     SendMessage(FButtonHandle,WM_LBUTTONUP,0,0);
  124.     sleep(200);
  125.     captions:='关闭(&C)';
  126.     ButtonHandle:=WinHandle;
  127.     EnumChildWindows(ButtonHandle,@GetButtonHandle,Integer(@ButtonHandle));
  128.     FButtonHandle:=ButtonHandle;
  129.     SendMessage(FButtonHandle,WM_LBUTTONDOWN,0,0);
  130.     SendMessage(FButtonHandle,WM_LBUTTONUP,0,0);
  131.     sleep(1000);
  132.     Button1Click(self)
  133. end;
  134. procedure TForm1.Button1Click(Sender: TObject);
  135. begin
  136.    Gi:=0;
  137.    memo2.Text:=inttostr(strtoint(memo2.Text)+1);
  138.    form1.WebBrowser1.Navigate('tencent://Message/?Menu=no&Uin='+form1.memo2.text+'&websiteName=在线咨询');
  139. end;
  140. procedure TForm1.Timer1Timer(Sender: TObject);
  141. begin
  142. if GetQQCaption<>'' then
  143.    SendMessages(form1.Memo1.Text);
  144.    timer1.Enabled:=false;
  145. end;
  146. procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  147.   const pDisp: IDispatch; var URL: OleVariant);
  148. begin
  149.   timer1.Enabled:=true;
  150. end;
  151. procedure TForm1.FormCreate(Sender: TObject);
  152. begin
  153. //  form1.Label11.Caption:='世纪0769网址收藏站:'+chr(13)+'http://www.98exe.com';
  154.   memo2.Lines.LoadFromFile('QQ.txt');
  155. end;
  156. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  157. begin
  158.   memo2.Lines.SaveToFile('QQ.txt');
  159. end;
  160. procedure TForm1.Label11MouseMove(Sender: TObject; Shift: TShiftState; X,
  161.   Y: Integer);
  162. begin
  163. label11.Font.Style:=label11.Font.Style+[fsunderline];
  164. label11.Font.Color:=clred;
  165. end;
  166. procedure TForm1.Label11Click(Sender: TObject);
  167. begin
  168. //shellexecute(handle,nil,'http://www.0769cn.com/?input=qqsend',nil,nil,sw_normal);
  169. end;
  170. end.