亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何利用QT實現模擬鼠標點擊?

如何利用QT實現模擬鼠標點擊?

C++
烙印99 2018-09-04 16:12:50
QT入門,windows開發入門選手。我想利用QT實現一個模擬鼠標點擊的功能(Windows平臺),具體來說是這樣的:首先獲取某個特定名稱窗口的句柄,然后再模擬單擊這個窗口的特定位置,并且要求窗口可以不在桌面最前方顯示(即是虛擬的點擊,而不是把鼠標指針移到那個位置再點擊)根據網上的內容我寫了一個簡單的SLOT函數,如下:void MainWindow::clickTest() {     HWND hwndGameWindow=::FindWindow(NULL,L"窗口名稱");     gameWindow=QWidget::find((WId)hwndGameWindow);     qDebug()<<(QString)(gameWindow->windowTitle());     QPoint *pos=new QPoint(112,83);     QMouseEvent *clickEvent=new QMouseEvent(QEvent::MouseButtonPress,*pos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);     QApplication::sendEvent(gameWindow,clickEvent); }當我觸發這個槽函數的時候,系統報段錯誤,程序強制退出。請教各位錯誤出在哪?若能再給出實現我所描述功能的方法,不勝感激。
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

QWidget::find() 僅適用于 Qt 當前進程創建的窗口,而 FindWindow() 查詢的是整個操作系統下的頂級窗口。
因此,你若傳遞非 Qt 當前進程創建的窗口 ID 給 QWidget::find(),它將返回 NULL。

要給其他進程的窗口發送消息,大致流程是這樣的

  1. 用 FindWindow 找到目標窗口的頂級窗口

  2. 在頂級窗口下,用 FindWindowEx 找到目標窗口

  3. 構造需要發送的消息

  4. 用 SendMessage 或 PostMessage 向目標窗口發送消息


查看完整回答
反對 回復 2018-09-07
  • qq_慕UI8271673
    qq_慕UI8271673
    我打開了軟件,找到菜單欄,然后怎么操作菜單欄里面的選項,并且是連續操作,比如說點擊開始,然后多個選項中點擊新建,才會跳出另一個窗口。
  • 1 回答
  • 0 關注
  • 3449 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號