Qt:Qt使用滑鼠模擬函式mouse_event和按鍵模擬函式keybd_even實現網頁重新整理功能
阿新 • • 發佈:2018-12-08
用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); }