beginthread:windows编程一步一步带你实现群发器,傻

 2021-07-09 23:10    77  

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

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

不想敲代码beginthread,私信我“代码” 即可获取

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

创建项目

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

运行程序测试效果

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

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

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

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

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

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

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

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

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

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

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

添加成功后

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

YmVnaW50aHJlYWQ6d2luZG93c+e8lueoi+S4gOatpeS4gOatpeW4puS9oOWunueOsOe+pOWPkeWZqO+8jOWCu+eTnOW8j+aVmeeoiw==

添加类 QQMsg

QQMsg.h里写入下列代码不想敲代码,私信我“代码” 即可获取

#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;

};

在QQMsg.cpp中实现代码#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.将代码改为下列(并在此文件头中包含#include "QQMsg.h"):

不想敲代码,私信我“代码” 即可获取

UpdateData(true);

QQMsg::Instance()->Start(m_msg.GetBuffer());//m_msg.GetBuffer() 获取指针

最后大功告成。快去试一试吧。

本文标签:

原文链接:https://www.xgfox.com/bcrm/732.html

本文版权:如无特别标注,本站文章均为原创。