分享

c#编写QQ群发器源码

 quasiceo 2014-06-05
1、窗体引用两个timer控件,来控循环发送时间 
2、调试环境 vs2009.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 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(); 

 
private 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)); 

} 
}

)
 
 
/// 单个用户发送消息 
 
private void btnSend_Click(object sender, EventArgs e) 
{
MySendMessage();//发送信息,向单个用户发送。
}   
/// 循环发送消息
private void btnSSend_Click(object sender, EventArgs e) 

this.Qtimer.Enabled = true; 

/// 停止发送消息 
 
private void btnSStop_Click(object sender, EventArgs e) 

this.Qtimer.Enabled = false; 
} 
 
/// 计时器开始发送消息 
 
private void Qtimer_Tick(object sender, EventArgs e) 

this.MySendMessage(); 
}  
private void QunSendMessage()//针对群的消息发送过程
{ 
string machinename = System.Environment.MachineName; 
Process[] processlist = Process.GetProcesses(machinename); 
foreach (Process p in processlist) 

if (p.MainWindowTitle != "") 
{ OJ,m1{9$}  
if (p.MainWindowTitle.ToString().Substring(p.MainWindowTitle.Length - 1, 1) == "群")  
{ 
hwndQQ = FindWindow("#32770", p.MainWindowTitle.ToString()); 
hwnd1 = GetDlgItem(hwndQQ, 0); 
hwnd2 = GetDlgItem(hwnd1, 0); X")
hwnd3 = GetDlgItem(hwnd2, 894); 
SendMessage(hwnd3, 194, 0, this.txtGInput.Text);//向QQ输入框粘贴字符 
hwnd4 = GetDlgItem(hwnd1, 1);
SendMessage(hwnd4, 245, 0, Convert.ToString(0)); 
} 



/// 向群组发消息 
private void btnGXSend_Click(object sender, EventArgs e) 

this.QunSendMessage();//向群发送单条信息
} 
/// 循环向群组发送消息
 
private void btnGSend_Click(object sender, EventArgs e) 

this.QGtimer.Enabled = true; M {a #  

/// 停止向群组发送消息 AR&:Q4r|  
/// cDk V;$  
/// ;sOsT?)7$  
/// !DXNo(:r  
private void btnGStop_Click(object sender, EventArgs e) 
{ yi6N-7  
this.QGtimer.Enabled = false; 
}  
/// 计时器发送消息
  
private void QGtimer_Tick(object sender, EventArgs e) 
{ 0BU=)Swku  
this.QunSendMessage();//连续发送信息,多少秒发送一次,自己设定。

/// 利用tencent协议,打开临时对话框 
 
private void btnQQ_Click(object sender, EventArgs e)
{ )q~DTR^z-  
string s = "tencent://message/?uin=" + this.txtQQ.Text + "&Site=im.qq.com&Menu=yes";//是对方的QQ号
Process.Start(s); 
}
/// 初始化窗体 IND]j72  
 
private void QQSendMessage_Load(object sender, EventArgs e) 

this.txtGms.Text = "1000"; 
this.txtMs.Text = "1000"; 
}  

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约