Как я могу симулировать действие перетаскивания, используя Xlib?

У меня есть приложение, которое использует библиотеку 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);

Есть ли у вас какие-либо идеи?

Заранее спасибо.

1

Решение

Если вы в порядке с порождением дочернего процесса, вы можете легко использовать 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 библиотека.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]