Qt程序实现自动发送PC微信消息

思路:
1, 获取到微信窗口句柄
2,通过一系列模拟键盘/鼠标操作实现发送消息

上代码:(因为只有简单的1个功能 所以没有封装直接在main里写)
实际上没有用到Qt的API, 但是代码移植到VsCode编译出现中文乱码, 没找到如何解决于是就用Qt编译

#include <windows.h>
#include <QDebug>

int main()
{

    HWND hwnd = FindWindowA("WeChatMainWndForPC", NULL);//获取微信窗口句柄
    if(hwnd == NULL){
        qDebug()<<"不找到";
        exit(0);
    }
    ShowWindow(hwnd, SW_MAXIMIZE);
    SetWindowPos(hwnd, HWND_TOP,0, 0, 1000, 700, SWP_SHOWWINDOW);//微信窗口置顶
    SetCursorPos(18,148);//窗口移动
    /*
    *模拟鼠标键盘按键操作
    */
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    SetCursorPos(18,100);
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

    keybd_event(17,0,0,0);//模拟按下ctrl
    keybd_event('F',0,0,0);//模拟按下F
    keybd_event(17,0,KEYEVENTF_KEYUP,0);
    keybd_event('F',0,KEYEVENTF_KEYUP,0);

    Sleep(1000);
    TCHAR szText[] = L"TestMsg"; //发送联系人

    if (OpenClipboard(hwnd)) {//系统剪切板操作
        EmptyClipboard();
        HANDLE hData = GlobalAlloc(GMEM_MOVEABLE, sizeof(szText));
        LPWSTR pData = (LPWSTR)GlobalLock(hData);
        CopyMemory(pData, szText, sizeof(szText));
        GlobalUnlock(hData);
        SetClipboardData(CF_UNICODETEXT, hData);
        CloseClipboard();
    }
    keybd_event(17,0,0,0);
    keybd_event('V',0,0,0);
    keybd_event(17,0,KEYEVENTF_KEYUP,0);
    keybd_event('V',0,KEYEVENTF_KEYUP,0);//ctrl + V

    Sleep(1000);//等待微信搜索联系人
    keybd_event(13,0,0,0);//按下 回车键
    keybd_event(13,0,KEYEVENTF_KEYUP,0);

    TCHAR sendText[] = L"怎么还不还钱";//发送的消息
    if (OpenClipboard(hwnd)) {
        EmptyClipboard();
        HANDLE hData = GlobalAlloc(GMEM_MOVEABLE, sizeof(sendText));
        LPWSTR pData = (LPWSTR)GlobalLock(hData);
        CopyMemory(pData, sendText, sizeof(sendText));
        GlobalUnlock(hData);
        SetClipboardData(CF_UNICODETEXT, hData);
        CloseClipboard();
    }
    for(int i=0; i<10; i++){//发送消息次数
    keybd_event(17,0,0,0);
    keybd_event('V',0,0,0);
    keybd_event(17,0,KEYEVENTF_KEYUP,0);
    keybd_event('V',0,KEYEVENTF_KEYUP,0);

    keybd_event(13,0,0,0);
    keybd_event(13,0,KEYEVENTF_KEYUP,0);
    Sleep(500);
}
    SetWindowPos(hwnd, HWND_TOP,0, 0, 1000, 700, SWP_HIDEWINDOW);//发送结束隐藏微信
    return 0;
}
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值