QT入門,windows開發(fā)入門選手。我想利用QT實現(xiàn)一個模擬鼠標點擊的功能(Windows平臺),具體來說是這樣的:首先獲取某個特定名稱窗口的句柄,然后再模擬單擊這個窗口的特定位置,并且要求窗口可以不在桌面最前方顯示(即是虛擬的點擊,而不是把鼠標指針移到那個位置再點擊)根據(jù)網(wǎng)上的內(nèi)容我寫了一個簡單的SLOT函數(shù),如下: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);
}當我觸發(fā)這個槽函數(shù)的時候,系統(tǒng)報段錯誤,程序強制退出。請教各位錯誤出在哪?若能再給出實現(xiàn)我所描述功能的方法,不勝感激。
2 回答

繁星點點滴滴
TA貢獻1803條經(jīng)驗 獲得超3個贊
QWidget::find()
僅適用于 Qt 當前進程創(chuàng)建的窗口,而 FindWindow()
查詢的是整個操作系統(tǒng)下的頂級窗口。
因此,你若傳遞非 Qt 當前進程創(chuàng)建的窗口 ID 給 QWidget::find()
,它將返回 NULL。
要給其他進程的窗口發(fā)送消息,大致流程是這樣的
用
FindWindow
找到目標窗口的頂級窗口在頂級窗口下,用
FindWindowEx
找到目標窗口構造需要發(fā)送的消息
用
SendMessage
或PostMessage
向目標窗口發(fā)送消息
- 2 回答
- 0 關注
- 1318 瀏覽
添加回答
舉報
0/150
提交
取消