Можно ли программно нажать кнопку другого приложения в Linux? - PullRequest
1 голос
/ 01 августа 2011

Можно ли отправить событие для определенного виджета (скажем, кнопки) в Linux (система X Window)

Я ищу эквивалент следующего кода для Linux (с использованием Xlib)

#include <windows.h>
int main()
{
  HWND WindowHandle;
  HWND ButtonHandle;

  WindowHandle = FindWindow(NULL, "File Download");
  ButtonHandle = FindWindowEx(WindowHandle, 0, "Button", "&Open");
  SendMessage (ButtonHandle, BM_CLICK, 0 , 0);

 return 0;
}

Я полагаю, что FindWindow можно смоделировать с помощью XFetchName, но я не знаю, как найти идентификатор конкретного виджета по имени (FindWindowEx) в случае, когда я знаю только виджет "имя" (т.е.подпись в случае кнопки).

Могу ли я это сделать?

1 Ответ

0 голосов
/ 01 августа 2011

Может быть, с использованием расширения XTest:

http://www.x.org/releases/X11R7.5/doc/Xext/xtestlib.pdf

Однако нет портативного способа определить, что является и не является виджетом на экране, как некоторые наборы инструментов GUI.визуализируйте все как отдельные объекты X, в то время как другие сначала сами создают свои композиции.

...