完美代码:C#实现qq群发器的方法
/* 使用C#实现qq群发器的方法 1、窗体引用两个timer控件,来控循环发送时间 2、调试环境 vs2005.net */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Da 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 { [DllImp static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImp static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem); [DllImp public static extern IntPtr FindWindowEx(IntPtr parentHandle, int childAfter, string className, int windowTitle); [DllImp static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam); [DllImp 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 "; } } } |