qq發信息

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);
        //}

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章