|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|||||||||||
Как получить заголовки активного приложения в Linux?15.05.2024, 13:14. Показов 3056. Ответов 25
Метки нет (Все метки)
Здравствуйте ребята. У меня есть такая задача: мне нужно раз в некоторое время (в 4 секунды) получать информацию о приложении с которым сейчас работает пользователь. Нужно знать заголовок окна, путь процесса в системе и на какой хост отправляет данные приложение. Я написала (с помощью статей со stackowrflow) следующий код:
файл ActiveApplication.hpp
Немного погуглив нашли на одном форуме ответ, что в новых версиях ubuntu по умолчанию используется wayland графическая оболочка - https://superuser.com/question... me-windows Перед нами стала задача, а возможно ли как-то абстрагироваться от типов оболочки и получать заголовки окон независимо от используемой графической подсистемы ? Вдруг через месяц выйдет новая подсистема и получается что нам придётся и под неё писать свою реализацию. Может кто знает способ универсальный ? Может можно как-то на уровне ядра ОС реализовать мою задачу ? Может можно, как антивирусы подключиться в системе к событию запуска приложения ? И перехватывать информацию о нём ? Кто-нибудь может подсказать решение ?
0
|
|||||||||||
| 15.05.2024, 13:14 | |
|
Ответы с готовыми решениями:
25
Как получить параметры активного приложения windows Как получить имя активного приложения переднего плана Android?
|
|
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,679
|
||||||||||||||||||
| 27.06.2024, 08:49 | ||||||||||||||||||
|
Меня смущает вот эта строчка:
OnEvent - подразумевает что по определённым событиям происходит обратный вызов (callback) подпрограммы обработчика этого события. Для связки события и его обработчика вызывается механизм подписки на событие. MessageLoop - подразумевает, что где-то крутится (условно) вечный цикл который пробегает и смотрит флаг срабатывания по всем событиям и если флаг выставлен вызывает соответствующий обработчик. Вот собственно по Вашей ссылке в цикле
0
|
||||||||||||||||||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
||||||||||||||||
| 27.06.2024, 12:42 [ТС] | ||||||||||||||||
|
Спасибо вам за ответ) продолжаю бороться найти решение. Я попробовала следующий код:
мне он очень нужен там, чтобы возпользоваться функцией XKeycodeToKeysym, которая в парамтерах требует Display. Поэтому в приватных переменных класса сделала указатель на Display* и в методе subscribeEventsKeyboardXorg открываю его. Мне так же важно иметь доступ к другим переменным моего класса. Не могли бы вы мне подсказать как мне быть в такой ситуации? Я пыталась получить указатель на свой класс из аргумента XPointer в callback функции. Но он приходит мне всегда со значением NULL. Приложила скриншот в котором видно что я получаю NULL в XPointer: Пыталась как-нибудь через лямба выражение передать указательно на свой класс, но получаю ошибку во время компиляции на строке XRecordEnableContext(display_, rc, callback, NULL); так как метод XRecordEnableContext ожидает определенного вида callback функцию. И я просто не знаю как мне быть.... Прошу вас снова помочь мне. Есть и ещё одна трудность. Мне в моём кейлогерре очень важно знать к какому окну принадлежат введенные с клавиатуры символы. Я стараюсь найти в интернете решение, просмотрела некоторые статьи. Но пока не знаю как мне связать введёный символ с окном приложения в котором был введён этот символ ? Можете смогли бы вы и здесь подсказать мне ? Я так же написала ещё один вариант кейлоггера) в котором пошла совсем другим путём и там уже получаю прям именно сам введёный символ, но не знаю как мне связать его с окном. Если мне хотя бы получить PID процесса приложения которому принадлежит соббытия ввода, то я уже по нему смогу и окно приложения вытащить. Приведу второй вариант кейлогерра. Может вы сможете подсказать в нём решение ? файл KeyboardTask.hpp
0
|
||||||||||||||||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
|
| 27.06.2024, 13:30 | |
|
tiny developer,
Извините, но вы походу ни документацию читать, ни думать не хотите.. Может вам сразу в "заказать программу"? смотрим closure Specifies data passed to callback. Вот и передавайте туда this, каую-либо "живую" структуру, если параметров больше 1 и т.д.
0
|
|
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|
| 27.06.2024, 20:02 [ТС] | |
|
спасибо, я оказывается не там передавала указатель this, не в том методе. Тепрерь я успешно его получаю, мне доступны все поля класса, но я по-прежнему мучаюсь. Никак не получается выдернуть значение кода клавиши из xEvent.
У меня почему-то метод XKeysymToString(XKeycodeToKeysym(display _, keycode, 0)) не отрабатывает. Как-будто зависает. Не могу пройти далее отладчиком... Если я завершаю приложение то вижу такой код завершения(скриншоты приложила).
0
|
|
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|||||||||||
| 27.06.2024, 20:48 [ТС] | |||||||||||
|
буду надеяться, что может кто из вас сможет помочь.
Добавлено через 44 минуты может кто сможет подсказать как можно получить pid процесса которому принадлежит ввод с клавиатуры ? Я сделала и второй вариант кейлогера, читая файл клавиатуры. Но в структуре которую я получаю нет никаких сведений о процессе, который принимал ввод с клавиатуры. Я правда много смотрела в интернете, искала и в документации. Перепробовала уже столько примеров и вариантов решения.... И всё никак не могу сделать... Я буду рада вашим подсказкам как для первого случая так и для второго. Вот мой второй уже кейлоггер) Файл KeyboardTask.hpp
0
|
|||||||||||
|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|||||||||||
| 31.07.2024, 20:32 [ТС] | |||||||||||
|
Здравствуйте ребята. Очень жаль что мне никто не ответил. Я за это время реализовала второй вариант кейлоггера, нашла способ связать клавишу с активным окном. Но у меня возник вопрос. Дело в том что на разных раскладках клавиатуры (русская и английская) я получаю один и тот же код клавиши. Проверяла даже в консоли программой
sudo showkey --keycodes а как мне получить текущую раскладку клавиатуры ? Чтобы я могла сделать себе ещё один список клавиш и учитывая раскладку брать из разных список символ кода. Вот мой код:
0
|
|||||||||||
| 31.07.2024, 20:32 | |
|
Помогаю со студенческими работами здесь
26
Как правильно убрать не нужные заголовки активного окна из текстбокса? Как реализовать PrintScreen активного приложения? Как изменить Memo активного дочернего окна MDI приложения? Получить выделенный текст из другого приложения linux
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|