吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 29574|回复: 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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#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] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#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] 纯文本查看 复制代码
1
2
UpdateData(true);
QQMsg::Instance()->Start(m_msg.GetBuffer());//m_msg.GetBuffer()   获取指针







三、编译


end

QQ群发-MFC应用程序.zip

14.7 KB, 阅读权限: 10, 下载次数: 950, 下载积分: 吾爱币 -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, 2025-5-22 18:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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