using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;
namespace qq
{
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;
private DateTime qqTimer = DateTime.Now;
private DateTime qqqTimer = DateTime.Now;
public QQSendMessage()
{
InitializeComponent();
}
private void MySendMessage()
{
string machinename = System.Environment.MachineName;//獲得計算機名
Process[] processlist = Process.GetProcesses(machinename);//得到所有進程
foreach (Process p in processlist)//列舉每個進程
{
if (p.MainWindowTitle != "")//標題是否爲空,不爲空執行下面代碼
{
MessageBox.Show(p.MainWindowTitle);
if (p.MainWindowTitle.ToString().Substring(0, 1) == "與" || 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>
private void btnSend_Click(object sender, EventArgs e)
{
string sQQNumber = "";
if (listQQs.SelectedItem == null)
{
return;
}
sQQNumber = listQQs.SelectedItem.ToString();
string s = "tencent://message/?uin=" + sQQNumber + "&Site=im.qq.com&Menu=yes";//是對方的QQ號
Process.Start(s);
Thread.Sleep(300);
this.MySendMessage();
Thread.Sleep(100);
btnClose_Click(null, null);
}
/// <summary>
/// 循環發送消息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSSend_Click(object sender, EventArgs e)
{
if (txtInput.Text.Length == 0)
{
string strMessage = "請輸入要發送的消息";
MessageBox.Show(strMessage, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
i = 0;
this.timer1.Interval = System.Convert.ToInt16(txtMs.Text);
this.timer1.Enabled = true;
}
/// <summary>
/// 停止發送消息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSStop_Click(object sender, EventArgs e)
{
this.timer1.Enabled = false;
}
/// <summary>
/// 計時器開始發送消息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
///
private int i = 0;
private void Qtimer_Tick(object sender, EventArgs e)
{
string sQQNumber = "";
if (i >= listQQs.Items.Count)
{
//MessageBox.Show(i.ToString());
timer1.Enabled = false;
btnClose_Click(null, null);
return;
}
listQQs.SelectedIndex = i;
sQQNumber = listQQs.Items[i].ToString();
i++;
string s = "tencent://message/?uin=" + sQQNumber + "&Site=im.qq.com&Menu=yes";//是對方的QQ號
Process.Start(s);
Thread.Sleep(300);
this.MySendMessage();
Thread.Sleep(100);
btnClose_Click(null, null);
if (DateTime.Now > qqTimer)
{
this.MySendMessage();
//qqTimer.AddMilliseconds(Convert.ToInt32(this.txtMs.Text.Trim()));
qqTimer = DateTime.Now.AddMilliseconds(Convert.ToInt32(this.txtMs.Text.Trim()));
}
}
/// <summary>
/// 向羣組發消息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClose_Click(object sender, EventArgs e)
{
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窗口
{
p.CloseMainWindow();
}
}
}
}
private void QQSendMessage_Load(object sender, EventArgs e)
{
txtInput.Text = "一卡通水電暖 www.duanliqing.kudo.cn";
this.Text = this.Text + " Group = "; //+ butQQin.Tag
}
//private void butQQin_Click(object sender, EventArgs e)
//{
// MyAddrList.數據訪問層.DBPersonal objData = new MyAddrList.數據訪問層.DBPersonal();
// objData.GetQQs(butQQin.Tag.ToString(), listQQs);
//}
}
}