⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 delphi编写的QQ自动发送器
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,StrUtils, Spin, Buttons;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    Timer5: TTimer;
    Button3: TButton;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label4: TLabel;
    memo1: TMemo;
    Timer3: TTimer;
    RadioGroup1: TRadioGroup;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Label1: TLabel;
    Timer2: TTimer;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    Label3: TLabel;
    Label5: TLabel;
    SpinEdit3: TSpinEdit;
    SpeedButton1: TSpeedButton;
    SpinEdit4: TSpinEdit;
    Label6: TLabel;
    Timer4: TTimer;
    Label7: TLabel;
    Label8: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer5Timer(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
  private
    hotkeyid  :integer;
  procedure WMhotkeyhandle(var msg:Tmessage);message wm_hotkey; //响应敏感键按键消息

  public
     end;

var
  Form1: TForm1;QQ32770:hwnd; a:hwnd;
implementation

{$R *.dfm}

function EnumChildWindowsPr(h: HWnd; TF: TForm1): Boolean; stdcall;
var
Buffer: array[0..255] of Char;
begin
Result := True;
getclassname(h,Buffer,1024);
if Buffer='RICHEDIT' then  a:=h;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
Pos: TPoint; Handle,ha: HWND;
Buf: array[0..1024] of Char; b,a: array[0..1024] of char;
begin
GetCursorPos(Pos);
Handle := WindowFromPoint(Pos);
GetClassName(Handle, Buf, 1024);
if Buf='#32770' then QQ32770:=Handle;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled :=false;
timer5.Enabled:=false;
timer2.Enabled:=false;
timer3.Enabled:=false;
end;

procedure TForm1.Timer5Timer(Sender: TObject);
var
hCurrentWindow,richedit,QQ,edit: HWnd;
szText: array[0..254] of char;
begin
QQ:=findwindow(nil,'发送消息');
edit:=findwindowex(QQ,0,'edit',nil);
richedit:=findwindowex(QQ,0,'richedit',nil);
 begin
  sendmessage(edit,wm_gettext,255,longint(@szText));
   if szText='' then
    begin
     SendMessage(edit,WM_SETTEXT, 0, lParam(pChar(memo1.Text)));
     SendMessage(richedit,WM_SETTEXT, 0, lParam(pChar(memo1.Text)));
     SendMessage(QQ,WM_COMMAND,1,0);
    end;
 end;
end;

procedure TForm1.Button3Click(Sender: TObject);
 begin
  if RadioButton1.Checked=true then timer5.Enabled :=true;
 if RadioButton2.Checked=true then timer3.Enabled :=true;
 if (SpinEdit1.Text='0')and(SpinEdit2.Text='0') then
  begin
   showmessage('请填写Y坐标');
   exit;
  end;
timer1.Enabled :=true;
timer2.Enabled :=true;
timer2.Interval:=strtoint(SpinEdit3.Text);
end;

procedure TForm1.Timer3Timer(Sender: TObject);
var
hCurrentWindow: HWnd;
szText,hao: array[0..254] of char;   pt: TPoint;Buf: array[0..1024] of Char;Handle: HWND;
  y3:integer;
begin
hCurrentWindow := GetWindow(form1.Handle,GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
sendmessage(hCurrentWindow,wm_gettext,255,longint(@szText));
if AnsiContainsText(szText,'发送消息') then
 begin
EnumChildWindows(hCurrentWindow,@EnumChildWindowsPr, Longint(Self));
sendmessage(a,wm_gettext,255,longint(@szText));
   if szText='' then
begin
   SendMessage(a,WM_SETTEXT, 0, lParam(pChar(memo1.Text)));
   SendMessage(hCurrentWindow,WM_COMMAND,1,0);
end;   end;
hCurrentWindow := GetWindow(hCurrentWindow,GW_HWNDNEXT);
end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
hCurrentWindow: HWnd;
szText,hao: array[0..254] of char;   pt: TPoint;Buf: array[0..1024] of Char;Handle: HWND;
  y3:integer;
begin
GetCursorPos(Pt);
  Handle := WindowFromPoint(Pt);
GetClassName(Handle, Buf, 1024);
  if (buf='Tencent_QQBar')and(pt.Y>strtoint(SpinEdit2.Text)) then
   begin
   SetCursorPos( pt.X,strtoint(SpinEdit1.Text));
   SetForegroundWindow(QQ32770);
   sleep(700);
   SetForegroundWindow(QQ32770);
   keybd_event( VK_NEXT, MapVirtualKey(VK_NEXT,0),0,0);
   end;
  if buf='Tencent_QQBar' then 
  begin
  mouse_event( MOUSEEVENTF_MOVE, 0, 7, 0, 0 );
  mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
  mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
  mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
  mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
   end;
   end;

procedure TForm1.FormCreate(Sender: TObject);
begin
hotkeyid:=GlobalAddAtom(pchar('UserDefineHotKey'))-$C000;
    //减去$C000是为了保证取值范围的限制
 registerhotkey(handle,hotkeyid,MOD_CONTROL or mod_Alt,$41);
    //敏感键为ctrl+Alt+A
end;

procedure TForm1.Wmhotkeyhandle(var msg:Tmessage);
var Handle:hwnd;pt:Tpoint;x,y:integer;
begin
   if (msg.LParamHi=$41) and(msg.lparamLo=MOD_CONTROL or mod_Alt) then
    begin
     msg.Result:=1; //该消息已经处理
     GetCursorPos(Pt);
     Handle := WindowFromPoint(Pt);
     if SpinEdit1.Text ='0' then
       begin
        SpinEdit1.Text:=inttostr(pt.Y);
        SpinEdit4.Text:=inttostr(pt.x);
        exit;
       end;
     if SpinEdit2.Text ='0' then
       begin
       SpinEdit2.Text:=inttostr(pt.Y-10);
       SetCursorPos(strtoint(SpinEdit4.Text),strtoint(SpinEdit1.Text));
       Button3.Click;
        exit;
       end;
    end;
 end;


procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
SpinEdit1.Text:='0';
SpinEdit2.Text:='0';
end;

procedure TForm1.Timer4Timer(Sender: TObject);
var
hCurrentWindow: HWnd;
szText,hao: array[0..254] of char;   pt: TPoint;Buf: array[0..1024] of Char;Handle: HWND;
begin
hCurrentWindow := GetWindow(form1.Handle,GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
sendmessage(hCurrentWindow,wm_gettext,255,longint(@szText));
if AnsiContainsText(szText,'聊天中') then
SendMessage(hCurrentWindow, WM_CLOSE, 0, 0);
if AnsiContainsText(szText,'查看消息') then
SendMessage(hCurrentWindow, WM_CLOSE, 0, 0);
hCurrentWindow := GetWindow(hCurrentWindow,GW_HWNDNEXT);
end;
end;

end.




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -