1. 程式人生 > >Qt:Qt使用滑鼠模擬函式mouse_event和按鍵模擬函式keybd_even實現網頁重新整理功能

Qt:Qt使用滑鼠模擬函式mouse_event和按鍵模擬函式keybd_even實現網頁重新整理功能

用Qt實現網頁重新整理功能

前言

在上一篇部落格Qt:使用Qt實現網頁自動重新整理工具,使用了PostMassage函式 通過Windows的訊息機制實現的網頁重新整理功能。因為訊息種類太多,不方便使用和記憶,所以Windows下的大部分訊息可以使用對應等價的API函式,不必直接通過訊息進行溝通。這節我們使用mouse_event滑鼠模擬函式和keybd_event鍵盤模擬函式繼續來實現網頁重新整理功能。

介面

介面當然還是用Qt來寫呀。
在這裡插入圖片描述

程式碼

qt 程式碼如下,完整工程請下載示例demo,或者github下載地址

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

//找到視窗,並將目標視窗設定到最前面
void Widget::FindAndFocus(){
    //【無欲則剛】30歲回農村 - CSDN部落格 - 2345加速瀏覽器 9.5
    QString title = ui->htmlWinTitle->text();
    if(title.isEmpty()){
        qDebug() <<"沒有找到視窗";
        return;
    }
    qDebug() << "找到視窗";
    LPCWSTR  str = (LPCWSTR)title.toUtf8().data();
    m_hWnd = FindWindow(NULL,str);
    SetForegroundWindow(m_hWnd);
}
Widget::~Widget()
{
    delete ui;
}
//模擬鍵盤
void Widget::on_btn1_clicked()
{
    FindAndFocus();
    //按鍵模擬函式,模擬F5
    keybd_event(VK_F5,0,0,0);
}
/*
 * 模擬滑鼠
 * 先找到視窗,移動滑鼠到視窗內,模擬 右鍵按下,模擬 L鍵 進行重新整理
 * 用的2345瀏覽器,不知道其他瀏覽器的按鍵是好多
 */
void Widget::on_btn2_clicked()
{
    FindAndFocus();
    //得到視窗座標
    POINT pt = {0};
    ClientToScreen(m_hWnd,&pt);
    //設定滑鼠位置
    SetCursorPos(pt.x + 300,pt.y+400);
    mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
    Sleep(100);
    mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
    Sleep(1000);
    //彈出右鍵選單,L快捷鍵重新整理,L 的ASCII 76。
    keybd_event(76,0,0,0);
}