У меня есть приложение, которое использует библиотеку Xlib для имитации мыши на экране.
Я использовал функции XQueryPointer и XWarpPointer, с помощью которых я могу имитировать движение мыши, а также щелчок. Моя проблема в том, что я не могу «перетащить» элемент (это интерфейс с некоторыми блоками, которые вы можете перемещать в приложении Qt, написанном на C ++ и запущенном в Ubuntu).
Я использую много частей этого извлечения:
Отправка события щелчка X11 не работает с некоторыми окнами
Может ли эта функция помочь мне?
::XGrabPointer(mDisplay, window, True,
ButtonPressMask |
ButtonReleaseMask |
PointerMotionMask |
FocusChangeMask |
EnterWindowMask |
LeaveWindowMask,
GrabModeAsync,
GrabModeAsync,
RootWindow(mDisplay, DefaultScreen(mDisplay)),
None,
CurrentTime);
Есть ли у вас какие-либо идеи?
Заранее спасибо.
Если вы в порядке с порождением дочернего процесса, вы можете легко использовать xdotool
для этого, как в:
xdotool mousedown 1
sleep 0.5
xdotool mousemove_relative --sync 200 200
sleep 0.5
xdotool mouseup 1
http://www.semicomplete.com/projects/xdotool/
http://tuxradar.com/content/xdotool-script-your-mouse
исходный код xdotool
послужит хорошей отправной точкой, если вы хотите сделать это самостоятельно в C с XTest
библиотека.
Других решений пока нет …