首页| 论坛| 消息

标题:怎样摸拟一个鼠标事件, 让鼠标能自动打开桌面上的回收站?
作者:y1363386323
日期:2018-02-09 20:54
内容:

如上图所示, 我想摸拟一个鼠标事件, 让鼠标能自动打开桌面上的回收站, 请问代码该怎样写?
下面是我写的代码, 可是不起作用
QMouseEvent myPressEvent(QEvent:: QEvent::MouseButtonDblClick,QPoint(0,0),Qt::LeftButton,Qt::NoButton,Qt::NoModifier);
qApp->sendEvent(QApplication::desktop(),&myPressEvent);


#1 [never_forget 02-10 09:30]
是要打开固定位置的程序还是要打开指定的程序?如果是指定的程序你可以试试直接通过程序名字打开,Qt 提供相关的函数!
#2 [kimtaikee 02-11 11:11]
对于Windows系统你得调用Win32 API
#include
void MainWindow::sendWinEvent(const QPoint &pos)
{
#ifdef Q_OS_WIN
INPUT ip;
// Set up a generic mouse press event.
ip.type = INPUT_MOUSE;
ip.mi.dx = pos.x();
ip.mi.dy = pos.y();
ip.mi.mouseData = 0;
ip.mi.time = 0;
ip.mi.dwExtraInfo = 0;
// First click
ip.mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN);
SendInput(1, &ip, sizeof(INPUT));
//Sleep(10);
ip.mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP);
SendInput(1, &ip, sizeof(INPUT));
Sleep(50);
// Second click
ip.mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN);
SendInput(1, &ip, sizeof(INPUT));
//Sleep(10);
ip.mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP);
SendInput(1, &ip, sizeof(INPUT));
#endif
}
LIBS += user32.lib

REF:
1. https://stackoverflow.com/questions/5789843/how-i-can-simulate-a-double-mouse-click-on-window-i-khow-handle-on-x-y-coord
2. https://social.msdn.microsoft.com/Forums/en-US/c1112e9e-1a96-477f-8c71-e0e24e4f892f/simulate-doubleclick?forum=csharplanguage
3. https://msdn.microsoft.com/en-us/library/ms646273(v=VS.85).aspx
#3 [fearlazy 02-27 09:52]
回收站也是个进程,应该启动它的进程吧

回复 发表
主题 版块