Взаимодействий с окнами в Linux

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Взаимодействий с окнами в Linux

Сообщение Indigo80 » 26.07.2016 22:07:32

Можно через wmctrl -plx
https://www.youtube.com/watch?v=TaPgo0tcm1A
Indigo80
новенький
 
Сообщения: 18
Зарегистрирован: 31.07.2012 11:24:06

Re: Взаимодействий с окнами в Linux

Сообщение pupsik » 27.07.2016 02:53:20

pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Взаимодействий с окнами в Linux

Сообщение pupsik » 27.07.2016 09:52:42

школота вирусы под линь писать начала ?
ваши проблемы.
п.с.
Под другой учёткой запустите...
Там ничего такого. Просто пример работы с апи иксов. В данном варианте - поиск окон и их координатов.
Ну а если школота. То папка unix (в фпс) вам в помощь. АПИ иксов в свободном доступе.
Плюс, учитывая лазарь, можно воспользоваться gtk или qt апи.
Мой бинарник на мсе. Вроде как без привязки к gtk, qt...

Добавлено спустя 30 минут 13 секунд:
Это тем кому страшна школота: https://youtu.be/mFIaA-nwCj4 :mrgreen:
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Взаимодействий с окнами в Linux

Сообщение pupsik » 27.07.2016 11:55:16

А зачем тогда спрашивать? Знаете что можно - делайте. :lol:

п.с.
Вопрос - как .... убирается. Он не актуален. Потому что:
то я слал сообщение в другое моё окно и выполнял некоторые операции
. Кто его знает что вы хотите. Вполне возможно:
школота вирусы под линь писать начала ?
. А это уже не касаемо этого форума ...

А так:
Функции для работы с xlib - есть.
Описание функции - есть.
Осталось только прикрутить.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Взаимодействий с окнами в Linux

Сообщение pupsik » 29.07.2016 22:06:40

выводит не понятный список окон.

Посмотрите в сторону: XmbTextPropertyToTextList и XGetWMName. Ну и после удачного получения "чистить" список не забывать - XFreeStringList.

я по всякому перепробовал как в инете... какие то абстрактные окна отображаются.
есть хорошие примеры на си (в Интернете). Понять что да как можно. Хотя, вполне достаточно и апи... Искать нужное долго и нудно, зато куда интереснее :lol:

...и самое главное... как перевести указатель на окно TWindow в THandle ?
э..э лин не равно винда... В принципе можете класс сделать - для удобства...

п.с.
Есть один нюанс - кодировка.
а тут он я хз... как проект называется ? %)
хм..: и кто же тут школьник??? Как то не стыкуется с этим:
если класс окна был мой, то я слал сообщение в другое моё окно
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Взаимодействий с окнами в Linux

Сообщение pupsik » 29.07.2016 22:40:59

это форум разработчиков ПО, если хотели помочь или показать что-нибудь, можно было исходник кинуть, было бы гораздо полезнее бинарника!
Кому полезнее? Узнать что можно блокануть работу компа? И это без прав админа. Т.е. положить конфетку в красивой обёртке?

Школота - показывает ваш уровень, а не мой...

По поводу "пустоты". Там не пусто (хотя лазарь в этом малость кривоват). Повторяю:
Есть один нюанс - кодировка.

Учитывая что вы всё равно пользуете gtk или qt то почему xlib? Т.е., возможно, проще их использовать. Хотя они просто "дубляжиком" занимаются. но всё же...
Мсе, по крайней мере, имеет зависимость от xlib и нет привязки к gtk или qt.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Взаимодействий с окнами в Linux

Сообщение pupsik » 29.07.2016 22:55:27

если не помогаете, тогда хотя бы не засоряйте тему.
одна вода... по делу ноль %)
обожаю флудить. Особенно нравиться на вирусные темы... Помочь школьнику - за честь...
Насчёт "по делу"... Вы уверены? Если вы не поняли о чем я писал... Это не значит что я дал ошибочное направление.
С другой стороны.... Может и найдутся помощники и посговорчивей... :mrgreen:

Добавлено спустя 12 минут 43 секунды:
п.с.
Почему: знаю что можно = знаю как???
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Взаимодействий с окнами в Linux

Сообщение Лекс Айрин » 06.08.2016 15:08:01

vfiuchcikicshuusrch, может, как обычно?
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
Var
  FHandle:THandle;

begin
      FHandle:=Form1.Handle;
end;
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Взаимодействий с окнами в Linux

Сообщение Лекс Айрин » 06.08.2016 18:50:20

vfiuchcikicshuusrch, возможно. Подозреваю, что это вообще разные указатели. Допустим, TWindow это указатель на структуру описания класса, а THandle это указатель на экземпляр класса. Или наоборот...
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Взаимодействий с окнами в Linux

Сообщение Vadim » 07.08.2016 18:47:38

,
Последний раз редактировалось Vadim 07.08.2016 18:49:55, всего редактировалось 1 раз.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Взаимодействий с окнами в Linux

Сообщение Vadim » 07.08.2016 18:59:18

vfiuchcikicshuusrch
TWindow - это и есть хэндл окна, это не объект.
Кстати, есть ещё функция FormToX11Window(TCustomForm): TWindow.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Взаимодействий с окнами в Linux

Сообщение скалогрыз » 07.08.2016 20:52:03

vfiuchcikicshuusrch писал(а):мне бы теперь обратную процедуру найти...

Если ты говоришь об окнах чужих приложений, то такой связи нет. (Очевидно потому что другие приложения LCL не используют)

А если ты говоришь о своём приложении, то пожалуйста:
Код: Выделить всё
function X11ToWindow(XWin: X.TWindow): TCustomForm;
  for i:=0 to Screen.FormCount-1 do begin
    Result:=Screen.Forms[i];
    if FormToX11Window(Result)=XWin then Exit;
   end;
  Result:=nil;
end;

:D
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Взаимодействий с окнами в Linux

Сообщение скалогрыз » 07.08.2016 21:35:47

vfiuchcikicshuusrch писал(а):эх жаль :(
мне нужно как раз с окнами других приложений общаться.
на самом деле приложение одно и моё, но их может быть запущено несколько экземпляров. и в винде я спокойной делаю это с помощью winapi.

всё правильно! попробуй общаться с ними через XWindow API.
Если оно вообще позволяет такое общение, потому что может не позволять из соображений безопасности.

vfiuchcikicshuusrch писал(а):интересно как тогда работает sendmessage в lazarus ?
он в linux есть и компилируется...
может быть ему будет достаточно TWindow в качестве указателя на окно ?! %)

Успехов с SendMessage, т.к. врят ли оно заработает.
LCL очень усердно эмулирует WinAPI на любой целевой платформе, но только для самой программы.
А при работе с внешними программыми (которые хз на чём написаны), такой номер не прокатит, и надёжнее всего использовать API целевой платформы.

Тут нужно ещё помнить о новой моде в ПО - песочницы. Официальные магазины ПО (Мелкософты и Яблоко) допускают к распорстранению только приложения которые работают в этой самой песочнице. Т.е. всё что не разрешено - запрещено. В частности песочниться может и на Винде запретить общение с чужим окнами.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Взаимодействий с окнами в Linux

Сообщение скалогрыз » 07.08.2016 21:58:13

vfiuchcikicshuusrch писал(а):тут кстати написано, что сообщение другому приложению послать можно...

ну вот.
У тебя есть всё что нужно! чего ещё не хватает-то? или XSendEvent недостаточен для "некоторых операций"?
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Взаимодействий с окнами в Linux

Сообщение скалогрыз » 07.08.2016 22:37:52

колись, что за данные такие?
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 250

Рейтинг@Mail.ru