惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - 云的恬淡,风的自由

现在我空仓!随时出击,不是现在,是在将来,要知什么时候,常来这里看看! 沪市,深市创近年来最大走跌幅 理解ASP.NET中的三层中的DAL、BLL和USL(转自51aspx) 隐藏的文件夹 基本应用程序的创建和部署 创建部署项目 汇编代码 照片尺寸 ASCII 基本字符对照表 一个函数控制多个按纽的两种方法 - 云的恬淡,风的自由 - 博客园 button的command和click事件的区别 datagridview分页时直接到指定页 世界各地域名后缀对照表 建立隐藏帐号 网络扫描器 端口服务对照表 GridView学习 csdn中的一些asp.net2.0好文章 Asp.net学习资源收藏
c#编写QQ群发器
云的恬淡,风的自由 · 2007-09-18 · via 博客园 - 云的恬淡,风的自由

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

        /// <summary>
        /// 单个用户发送消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSend_Click(object sender, EventArgs e)
        {
            MySendMessage();//发送信息,向单个用户发送。
        }

        /// <summary>
        /// 循环发送消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSSend_Click(object sender, EventArgs e)
        {
            this.Qtimer.Enabled = true;
        }

        /// <summary>
        /// 停止发送消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSStop_Click(object sender, EventArgs e)
        {
            this.Qtimer.Enabled = false;
        }

        /// <summary>
        /// 计时器开始发送消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        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 != "")
                {
                    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>
        private void btnGXSend_Click(object sender, EventArgs e)
        {
            this.QunSendMessage();//向群发送单条信息
        }

        /// <summary>
        /// 循环向群组发送消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGSend_Click(object sender, EventArgs e)
        {
            this.QGtimer.Enabled = true;
        }

        /// <summary>
        /// 停止向群组发送消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGStop_Click(object sender, EventArgs e)
        {
            this.QGtimer.Enabled = false;
        }

        /// <summary>
        /// 计时器发送消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void QGtimer_Tick(object sender, EventArgs e)
        {
            this.QunSendMessage();//连续发送信息,多少秒发送一次,自己设定。
        }

        /// <summary>
        /// 利用tencent协议,打开临时对话框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnQQ_Click(object sender, EventArgs e)
        {
            string s = "tencent://message/?uin=" + this.txtQQ.Text + "&Site=im.qq.com&Menu=yes";//是对方的QQ号
            Process.Start(s);
        }

        /// <summary>
        /// 初始化窗体
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void QQSendMessage_Load(object sender, EventArgs e)
        {
            this.txtGms.Text = "1000";
            this.txtMs.Text = "1000";
        }

    }
}