LINUX.ORG.RU

собственно нужно узнать айди окна и по нему определить все ресурсы те кнопки и тд

anonymous
()

хотябы для qt приложений

anonymous
()

Эта... в linux или в X Window System? Если в X и пользователю, то man xwininfo. Если в X программеру, то смотри в сторону доки "Xlib - C Language X Interface". Наиболее интересным там для тебя будет раздел "Window Information Functions". Указанная дока является составной частью документации на X Window System. Она должна быть там же, где и xfree86. Если у тебя ее нет (и на компакте с твоим дистрибутивом тоже нет -- сходи на www.xfree86.org).

nobody ★★
()

большое спасибо!!!

anonymous
()

1. Вообще говоря,
man XGetWindowProperty
НО - судя по вопросу, не поможет. nobody (*) (2003-01-30 16:04:57.443)
правильно посоветовал - читай доку. Хотя, для краткости, попробуй взглянуть
на http://www.the-labs.com/X11/XLib-Manual/window/

2. Понятие "ресурсы" в Win32 и в X'ах совершенно различны.

3. Насчет Qt. Из мануала:
WId QWidget::winId () const
Returns the window system identifier of the widget.
Portable in principle, but if you use it you are probably about to do something
non-portable. Be careful.

Die-Hard ★★★★★
()

Вдогонку про Qt:
const QObjectList * QObject::children () const
Returns a list of child objects, or 0 if this object has no children.

Может, тебе это надо (насчет кнопочек и т.д.)?

Die-Hard ★★★★★
()

2 Die-Hard.

Как я понял, чел хочет определить ID чужого окна, и по этому ID'у надыбать инфы. Тут твои Qt-функции не помогут, потому как дают ID и инфу на части своей же проги (а не чужой).

А по своей-то проге нафига какие-то там ресурсы? Сделал дамп на stdout всей инфы, и никакой "айди окна" для этого не нужен.

Вот один из его постов:
"собственно нужно узнать айди окна и по нему определить все ресурсы те кнопки и тд"

nobody ★★
()

Кстати, тот URL, который ты дал "для краткости" (Xlib manual) -- копия той доки, о которой я писал выше, и она есть в любом дистрибутиве (ну кроме однодискетных). И чтобы ее почитать, за инет платить не надо.

ЗЫ: извини, если я тебя своей дотошностью обидел.

nobody ★★
()

2 nobody:
Согласен про Qt. Собссно, содержательная часть моего ответа была - man XGetWindowProperty и
замечания про ресурсы.

> Кстати, тот URL, который ты дал "для краткости" (Xlib manual) -- копия той доки,
> о которой я писал выше, она есть в любом дистрибутиве (ну кроме однодискетных).
> И чтобы ее почитать, за инет платить не надо.
ОЧЕНЬ часто доки не ставят, особенно мигранты с Вин. С др. стороны, часто Инет халявный.
Я настолько привык к халявному толстому каналу, что мне легче пройти по URL,
чем искать на диске. Я и кинул ссылку на главу... Действительно, не подумал, что
у человека Инет платным может быть.







Die-Hard ★★★★★
()
Ответ на: комментарий от anonymous

> как это делает xwininfo??? 
Ну, не так тривиально - на уровне Xlib'а грабит курсор, перехватывает 
X  события и по нажатию на батон смотрит, в каком окне событие 
произошло. Вот полный код процедуры:

Window
select_window (Display *dpy)
{
  int status;
  Cursor cursor;
  XEvent event;
  Window win = None;
  Window root = DefaultRootWindow (dpy);
  int buttons = 0;

  /* Make the target cursor */
  cursor = XCreateFontCursor (dpy, XC_crosshair);

  /* Grab the pointer using target cursor, letting it room all over */
  status = XGrabPointer (dpy, root, False,
                         ButtonPressMask|ButtonReleaseMask, GrabModeSync,
                         GrabModeAsync, root, cursor, CurrentTime);
  if (status != GrabSuccess)
    {
      fprintf (stderr, "Can't grab the mouse.\n");
      exit (1);
    }

  /* Let the user select a window... */
  while ((win == None) || (buttons != 0))
    {
      /* allow one more event */
      XAllowEvents (dpy, SyncPointer, CurrentTime);
      XWindowEvent (dpy, root, ButtonPressMask|ButtonReleaseMask, &event);
      switch (event.type)
       {
        case ButtonPress:
         if (win == None)
          {
             win = event.xbutton.subwindow; /* window selected */
          }
         buttons++;
         break;
        case ButtonRelease:
         if (buttons > 0) /* there may have been some down before we started
*/
         buttons--;
         break;
       }
      }

    XUngrabPointer (dpy, CurrentTime);      /* Done with pointer */

    return win;
}

Die-Hard ★★★★★
()

мне бы фун-цию из xwininfo которая по заголовку окна ищет

anonymous
()

а вообще желательно все src xwininfo не подскажете где можно всять,я то в инете я не нашел(((( можно ссылку т.к. канал толстый)))

anonymous
()

не как не найду ф-цию в Xlib с помощью которой можно по id получить caption окна((( пытался использовать XGetTextProperty но насколько я понял XA_WM_NAME-это не то что мне надо

anonymous
()

XGetWMName -- это то, что тебе надо. Насчет сырцов. Сходи на www.xfree86.org. Там лежат тарболы с исходниками XFree86. В этих тарболах, помимо всего прочего, есть сырцы утилит, идущих вместе с иксами. В том числе xwininfo.

nobody ★★
()

Вот пример использования XGetWMName:


char *GetWindowTitle(Display *dpy, Window win)
  {
  char *title = NULL;
  XTextProperty prop;
  if (XGetWMName(dpy, win, &prop)  &&  prop.value)
    {
    char **names;
    int cnt;
    if (XmbTextPropertyToTextList(dpy, &prop, &names, &cnt) >= 0)
      {
      if (cnt  &&  *names  &&  **names)  title = strdup(*names);
      XFreeStringList(names);
      }
    XFree(prop.value);
    }
  return title;
  }

nobody ★★
()

большое спасибо

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.