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。
要給其他進程的窗口發送消息,大致流程是這樣的
用
FindWindow
找到目標窗口的頂級窗口在頂級窗口下,用
FindWindowEx
找到目標窗口構造需要發送的消息
用
SendMessage
或PostMessage
向目標窗口發送消息
- 1 回答
- 0 關注
- 3449 瀏覽
添加回答
舉報
0/150
提交
取消