Взаимодействий с окнами в Linux
Модератор: Модераторы
Re: Взаимодействий с окнами в Linux
Можно через wmctrl -plx
https://www.youtube.com/watch?v=TaPgo0tcm1A
https://www.youtube.com/watch?v=TaPgo0tcm1A
ваши проблемы.школота вирусы под линь писать начала ?
п.с.
Под другой учёткой запустите...
Там ничего такого. Просто пример работы с апи иксов. В данном варианте - поиск окон и их координатов.
Ну а если школота. То папка unix (в фпс) вам в помощь. АПИ иксов в свободном доступе.
Плюс, учитывая лазарь, можно воспользоваться gtk или qt апи.
Мой бинарник на мсе. Вроде как без привязки к gtk, qt...
Добавлено спустя 30 минут 13 секунд:
Это тем кому страшна школота: https://youtu.be/mFIaA-nwCj4
А зачем тогда спрашивать? Знаете что можно - делайте.
п.с.
Вопрос - как .... убирается. Он не актуален. Потому что:
А так:
Функции для работы с xlib - есть.
Описание функции - есть.
Осталось только прикрутить.
п.с.
Вопрос - как .... убирается. Он не актуален. Потому что:
. Кто его знает что вы хотите. Вполне возможно:то я слал сообщение в другое моё окно и выполнял некоторые операции
. А это уже не касаемо этого форума ...школота вирусы под линь писать начала ?
А так:
Функции для работы с xlib - есть.
Описание функции - есть.
Осталось только прикрутить.
выводит не понятный список окон.
Посмотрите в сторону: XmbTextPropertyToTextList и XGetWMName. Ну и после удачного получения "чистить" список не забывать - XFreeStringList.
есть хорошие примеры на си (в Интернете). Понять что да как можно. Хотя, вполне достаточно и апи... Искать нужное долго и нудно, зато куда интереснеея по всякому перепробовал как в инете... какие то абстрактные окна отображаются.
э..э лин не равно винда... В принципе можете класс сделать - для удобства......и самое главное... как перевести указатель на окно TWindow в THandle ?
п.с.
Есть один нюанс - кодировка.
хм..: и кто же тут школьник??? Как то не стыкуется с этим:а тут он я хз... как проект называется ? %)
если класс окна был мой, то я слал сообщение в другое моё окно
Кому полезнее? Узнать что можно блокануть работу компа? И это без прав админа. Т.е. положить конфетку в красивой обёртке?это форум разработчиков ПО, если хотели помочь или показать что-нибудь, можно было исходник кинуть, было бы гораздо полезнее бинарника!
Школота - показывает ваш уровень, а не мой...
По поводу "пустоты". Там не пусто (хотя лазарь в этом малость кривоват). Повторяю:
Есть один нюанс - кодировка.
Учитывая что вы всё равно пользуете gtk или qt то почему xlib? Т.е., возможно, проще их использовать. Хотя они просто "дубляжиком" занимаются. но всё же...
Мсе, по крайней мере, имеет зависимость от xlib и нет привязки к gtk или qt.
обожаю флудить. Особенно нравиться на вирусные темы... Помочь школьнику - за честь...если не помогаете, тогда хотя бы не засоряйте тему.
одна вода... по делу ноль %)
Насчёт "по делу"... Вы уверены? Если вы не поняли о чем я писал... Это не значит что я дал ошибочное направление.
С другой стороны.... Может и найдутся помощники и посговорчивей...
Добавлено спустя 12 минут 43 секунды:
п.с.
Почему: знаю что можно = знаю как???
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
vfiuchcikicshuusrch, может, как обычно?
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
Var
FHandle:THandle;
begin
FHandle:=Form1.Handle;
end; - Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
vfiuchcikicshuusrch, возможно. Подозреваю, что это вообще разные указатели. Допустим, TWindow это указатель на структуру описания класса, а THandle это указатель на экземпляр класса. Или наоборот...
,
Последний раз редактировалось Vadim 07.08.2016 17:49:55, всего редактировалось 1 раз.
vfiuchcikicshuusrch
TWindow - это и есть хэндл окна, это не объект.
Кстати, есть ещё функция FormToX11Window(TCustomForm): TWindow.
TWindow - это и есть хэндл окна, это не объект.
Кстати, есть ещё функция FormToX11Window(TCustomForm): TWindow.
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;
vfiuchcikicshuusrch писал(а):эх жаль
мне нужно как раз с окнами других приложений общаться.
на самом деле приложение одно и моё, но их может быть запущено несколько экземпляров. и в винде я спокойной делаю это с помощью winapi.
всё правильно! попробуй общаться с ними через XWindow API.
Если оно вообще позволяет такое общение, потому что может не позволять из соображений безопасности.
vfiuchcikicshuusrch писал(а):интересно как тогда работает sendmessage в lazarus ?
он в linux есть и компилируется...
может быть ему будет достаточно TWindow в качестве указателя на окно ?! %)
Успехов с SendMessage, т.к. врят ли оно заработает.
LCL очень усердно эмулирует WinAPI на любой целевой платформе, но только для самой программы.
А при работе с внешними программыми (которые хз на чём написаны), такой номер не прокатит, и надёжнее всего использовать API целевой платформы.
Тут нужно ещё помнить о новой моде в ПО - песочницы. Официальные магазины ПО (Мелкософты и Яблоко) допускают к распорстранению только приложения которые работают в этой самой песочнице. Т.е. всё что не разрешено - запрещено. В частности песочниться может и на Винде запретить общение с чужим окнами.
vfiuchcikicshuusrch писал(а):тут кстати написано, что сообщение другому приложению послать можно...
ну вот.
У тебя есть всё что нужно! чего ещё не хватает-то? или XSendEvent недостаточен для "некоторых операций"?
колись, что за данные такие?
