吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 28890|回复: 73
上一主题 下一主题
收起左侧

[C&C++ 转载] 简单写一个实现QQ群发功能的软件

  [复制链接]
跳转到指定楼层
楼主
爱学习的小仙女 发表于 2018-3-6 14:08 回帖奖励
本帖最后由 爱学习的小仙女 于 2018-3-6 14:12 编辑

写在前面的话:


过年的时候QQ里各种群发祝福不断,这种群发消息只能在节假日的时候才会出现。日常生活中,在需要用到群发功能的时候,还需要借助其他软件来实现群发。今天:在这里简单写一个实现QQ群发功能的软件(通过模拟按键来实现消息的群发)


准备:




开发工具:VCvs系列,等等····  都可以(我用的是vs2015


百度:函数keybd_event的功能和用法。


一、设计界面1.新建项目:选择MFC应用程序,选择保存位置


1.1





1.2





2.下一步:勾选<基于对话框>,取消勾选:安全开发生命周期检查。然后直接点击完成。









3:这就是一个建立好的MFC应用程序了,可以直接运行下看看效果










4.选中控件,按下键盘上的删除<Delete>,控件就不见了。






5.选择控件,输入:开始发送(或者右击,属性,改变文字)









6.选择工具箱,找到Edit控件,在对话框上拖动显示出来..








7.添加其他的控件,设置对话框界面。最终界面效果:






8.编辑框右击,添加变量:m_msg







添加成功后




二、设计程序1.添加类 QQMsg











2. 在QQMsg里写入下列代码



[Asm] 纯文本查看 复制代码
#pragma once

//这个类是实现QQ群发的类
class QQMsg
{
public:
        QQMsg();
        ~QQMsg();

        //static 创建一个类的入口
        static QQMsg *Instance() {
                static QQMsg object;
                return &object;
        }

        //入口函数(开启群发的函数实现)
        void Start(const wchar_t *msg);//const  群发的消息,一般不改变

private:
        //线程函数
        static unsigned int WINAPI RunThreadProc(void *param);

        //发送主函数
        void SendMain();

        //模拟键盘函数
        void PressKey(BYTE vkey);// 

        //发送消息
        void SendMsg();

        //把文字拷贝到剪切板
        void CopyTextToClipborad();

private:
        CString m_Msg;
};

3.在QQMsg.cpp中实现代码
[Asm] 纯文本查看 复制代码
#include "stdafx.h"
#include "QQMsg.h"


QQMsg::QQMsg()
{

}


QQMsg::~QQMsg()
{

}


//入口函数(开启群发的函数实现)
void QQMsg::Start(const wchar_t *msg)
{
        m_Msg=CString(msg);
        //开始线程
        _beginthreadex(NULL, 0, QQMsg::RunThreadProc, NULL, 0, NULL);
}

//线程函数
unsigned int QQMsg::RunThreadProc(void *param)
{
        QQMsg::Instance()->SendMain();
        return 0;
}

//发送主函数
void QQMsg::SendMain()
{        
        int errtimes = 0;

//实现整个发送消息的流程
        //复制文字到剪切板
        CopyTextToClipborad();

        ////int i;
        while (errtimes<=4)
        {
                //2.找到QQ窗口
                HWND hQQWnd = FindWindow(L"TXGuiFoundation",L"QQ");
                //windows系统中窗口的查找.1.窗口类名称.2.标题
                //工具 --> spy++

                //找到一个最前的窗口
                HWND hfront = GetForegroundWindow();
                if (hQQWnd!= hfront)
                {
                        if (!SetForegroundWindow(hQQWnd))//强制把QQ窗口置顶
                        {
                                MessageBox(NULL,L"找不到QQ窗口",L"警告",MB_OK);
                                break;
                        }
                }
                ////模拟按键        keybd_event函数
                if (errtimes == 0)
                {//使用循环这里会出问题
                        // i = 6;
                        // while (i--)
                        // {
                        //         PressKey(VK_TAB);
                        // }

//按下6次TAB键
                        PressKey(VK_TAB);
                        PressKey(VK_TAB);
                        PressKey(VK_TAB);
                        PressKey(VK_TAB);
                        PressKey(VK_TAB);
                        PressKey(VK_TAB);
                }

                PressKey(VK_DOWN);
                PressKey(VK_RETURN);

                HWND hcurfrontWnd = GetForegroundWindow();
                if (hcurfrontWnd == hQQWnd)
                {
                        errtimes++;
                        continue;
                }
                errtimes = 0;
                SendMsg();
        }
}

//模拟键盘函数
void QQMsg::PressKey(BYTE vkey)
{
        //模拟按键        keybd_event函数
        keybd_event(vkey,0,0,0);
        Sleep(100);//时间间隔100ms
        keybd_event(vkey,0,KEYEVENTF_KEYUP,0);
        Sleep(100);
}

//发送消息
void QQMsg::SendMsg()
{
        //ctrl+v
        keybd_event(VK_CONTROL, 0, 0, 0);
        Sleep(100);
        keybd_event(0x56, 0, 0, 0);
        Sleep(100);

        keybd_event(0x56, 0, KEYEVENTF_KEYUP, 0); 
        Sleep(100);
        keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
        Sleep(100);

        PressKey(VK_RETURN);//enter
        PressKey(VK_ESCAPE);//Esc 关闭
}

//把文字拷贝到剪切板
void QQMsg::CopyTextToClipborad()
{
        //全局内存中找一内存来存放字符串
        int memLen = m_Msg.GetLength() * sizeof(wchar_t) + 2;
        HANDLE hHandle = GlobalAlloc(GHND, memLen);
        void *addr = GlobalLock(hHandle);
        ZeroMemory(addr, memLen);

        memcpy(addr, (const wchar_t*)m_Msg.GetBuffer(), memLen);
        GlobalUnlock(hHandle);


        //
        OpenClipboard(NULL);//打开剪切板
        EmptyClipboard();//清空
        SetClipboardData(CF_UNICODETEXT, hHandle);//设置剪切板内容
        CloseClipboard();//
}



3.返回对话框,双击开始发送按钮








3.将代码改为下列(并在此文件头中包含#include "QQMsg.h"):





[Asm] 纯文本查看 复制代码
UpdateData(true);
QQMsg::Instance()->Start(m_msg.GetBuffer());//m_msg.GetBuffer()   获取指针







三、编译


end

QQ群发-MFC应用程序.zip

14.7 KB, 阅读权限: 10, 下载次数: 947, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 18吾爱币 +16 热心值 +17 收起 理由
seekwe + 1 用心讨论,共获提升!
PigWord + 1 + 1 用心讨论,共获提升!
binwaer + 1 + 1 好东西收藏了
wjpaizzy + 1 + 1 我很赞同!
wslong + 1 期待增加图片功能~
tim9292654 + 1 + 1 谢谢@Thanks!
始终大碟 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
wushaominkk + 2 + 1 不错的教程,加油!
lao88668 + 1 + 1 有没有最新版迅雷pojie版分享啊,原来贴子链接废了
wmy310 + 1 + 1 谢谢@Thanks!
御天2277 + 1 + 1 同样除了压缩包以外的都没看懂
旋木过流年 + 1 + 1 谢谢@Thanks!
zjc3967132 + 1 + 1 我很赞同!
huantaiping + 1 除了最后一个压缩包我看懂了,其余都没看!
不识i + 2 + 1 热心回复!
a159189 + 1 + 1 用心讨论,共获提升!
WYWZ + 1 + 1 妹子厉害了
帝傲世 -1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| 爱学习的小仙女 发表于 2018-3-14 16:15 |楼主
hyl6688 发表于 2018-3-14 15:13
提示计算机中丢失mfc140u.dll,无法使用,怎么办

提示缺失mfc140u.dll文件的话,可以到网上下载这个动态链接库。

或者按照上面的方法自己编译下
推荐
 楼主| 爱学习的小仙女 发表于 2018-3-28 18:11 |楼主
g93653971 发表于 2018-3-28 15:47
但是我发现下载下来用不了 啊


程序是64位的,还需要安装一些dll文件。

你可以按照方法,自己编译下
沙发
mayl8822 发表于 2018-3-6 14:17
3#
D小小贱 发表于 2018-3-6 14:19 来自手机
收藏备用
4#
帝傲世 发表于 2018-3-6 14:24
支持小仙女出品~·
抱歉 评分点错了……
再抱歉下,QQ很少用了……
5#
zjf6311 发表于 2018-3-6 14:36
学习学习~
6#
做客人间 发表于 2018-3-6 14:37
谢谢楼主 感谢分享
7#
2016年11月11号 发表于 2018-3-6 14:54
两条路,一条必须走,一条想走!
8#
liziya 发表于 2018-3-6 15:15

感谢分享
9#
a159189 发表于 2018-3-6 15:23
很赞,不错,感谢分享
10#
不识i 发表于 2018-3-6 15:24
妹子厉害呀
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 17:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表