完美代码:C#实现qq群发器的方法

/*

使用C#实现qq群发器的方法

1、窗体引用两个timer控件,来控循环发送时间

2、调试环境 vs2005.net

*/

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;

using System.Diagnostics;

namespace CrazyCoder.QQ.QQSendMessage

{

public partial class QQSendMessage : Form

{

[DllImport("user32.dll ")]

static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll ")]

static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);

[DllImport("user32.dll ", SetLastError = true)]

public static extern IntPtr FindWindowEx(IntPtr parentHandle, int childAfter, string className, int windowTitle);

[DllImport("user32.dll ", EntryPoint = "SendMessage ")]

static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);

[DllImport("kernel32.dll ", CharSet = CharSet.Auto)]

public static extern IntPtr GetModuleHandle(string lpModuleName);

IntPtr hwndQQ;

IntPtr hwnd1;

IntPtr hwnd2;

IntPtr hwnd3;

IntPtr hwnd4;

public QQSendMessage()

{

InitializeComponent();

}

protected void MySendMessage()

{

string machinename = System.Environment.MachineName;//获得计算机名

Process[] processlist = Process.GetProcesses(machinename);//得到所有进程

foreach (Process p in processlist)//列举每个进程

{

if (p.MainWindowTitle != " ")//标题是否为空,不为空执行下面代码

{

if (p.MainWindowTitle.ToString().Substring(0, 1) == "与 ")//查看窗口标题第一个字是否是“与”。如果是的,说明是QQ窗口

{

hwndQQ = FindWindow("#32770 ", p.MainWindowTitle.ToString());

hwnd1 = GetDlgItem(hwndQQ, 0);

hwnd2 = GetDlgItem(hwnd1, 0);

hwnd3 = GetDlgItem(hwnd2, 894);

SendMessage(hwnd3, 194, 0, this.txtInput.Text);//向QQ输入框粘贴字符,this.textBox1.Text是要发送的文字信息

hwnd4 = GetDlgItem(hwnd1, 1);

SendMessage(hwnd4, 245, 0, Convert.ToString(0));

}

}

}

}

/// <summary>

/// 单个用户发送消息

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void btnSend_Click(object sender, EventArgs e)

{

MySendMessage();//发送信息,向单个用户发送。

}

/// <summary>

/// 循环发送消息

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void btnSSend_Click(object sender, EventArgs e)

{

this.Qtimer.Enabled = true;

}

/// <summary>

/// 停止发送消息

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void btnSStop_Click(object sender, EventArgs e)

{

this.Qtimer.Enabled = false;

}

/// <summary>

/// 计时器开始发送消息

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void Qtimer_Tick(object sender, EventArgs e)

{

this.MySendMessage();

}

protected void QunSendMessage()//针对群的消息发送过程

{

string machinename = System.Environment.MachineName;

Process[] processlist = Process.GetProcesses(machinename);

foreach (Process p in processlist)

{

if (p.MainWindowTitle != " ")

{

if (p.MainWindowTitle.ToString().Substring(p.MainWindowTitle.Length - 1, 1) == "群 ")

{

hwndQQ = FindWindow("#32770 ", p.MainWindowTitle.ToString());

hwnd1 = GetDlgItem(hwndQQ, 0);

hwnd2 = GetDlgItem(hwnd1, 0);

hwnd3 = GetDlgItem(hwnd2, 894);

SendMessage(hwnd3, 194, 0, this.txtGInput.Text);//向QQ输入框粘贴字符

hwnd4 = GetDlgItem(hwnd1, 1);

SendMessage(hwnd4, 245, 0, Convert.ToString(0));

}

}

}

}

/// <summary>

/// 向群组发消息

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void btnGXSend_Click(object sender, EventArgs e)

{

this.QunSendMessage();//向群发送单条信息

}

/// <summary>

/// 循环向群组发送消息

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void btnGSend_Click(object sender, EventArgs e)

{

this.QGtimer.Enabled = true;

}

/// <summary>

/// 停止向群组发送消息

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void btnGStop_Click(object sender, EventArgs e)

{

this.QGtimer.Enabled = false;

}

/// <summary>

/// 计时器发送消息

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void QGtimer_Tick(object sender, EventArgs e)

{

this.QunSendMessage();//连续发送信息,多少秒发送一次,自己设定。

}

/// <summary>

/// 利用tencent协议,打开临时对话框

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void btnQQ_Click(object sender, EventArgs e)

{

string s = "tencent://message/?uin= " + this.txtQQ.Text + "&Site=im.qq.com&Menu=yes ";//是对方的QQ号 比如疯狂代码和傲博知识库的qq

Process.Start(s);

}

/// <summary>

/// 初始化窗体

/// </summary>

/// <param name= "sender "> </param>

/// <param name= "e "> </param>

protected void QQSendMessage_Load(object sender, EventArgs e)

{

this.txtGms.Text = "1000 ";

this.txtMs.Text = "1000 ";

}

}

}