|
0 / 0 / 1
Регистрация: 27.06.2013
Сообщений: 88
|
|||||||||||
Как получить заголовки активного приложения в Linux?15.05.2024, 13:14. Показов 3204. Ответов 25
Метки нет (Все метки)
Здравствуйте ребята. У меня есть такая задача: мне нужно раз в некоторое время (в 4 секунды) получать информацию о приложении с которым сейчас работает пользователь. Нужно знать заголовок окна, путь процесса в системе и на какой хост отправляет данные приложение. Я написала (с помощью статей со stackowrflow) следующий код:
файл ActiveApplication.hpp
Немного погуглив нашли на одном форуме ответ, что в новых версиях ubuntu по умолчанию используется wayland графическая оболочка - https://superuser.com/question... me-windows Перед нами стала задача, а возможно ли как-то абстрагироваться от типов оболочки и получать заголовки окон независимо от используемой графической подсистемы ? Вдруг через месяц выйдет новая подсистема и получается что нам придётся и под неё писать свою реализацию. Может кто знает способ универсальный ? Может можно как-то на уровне ядра ОС реализовать мою задачу ? Может можно, как антивирусы подключиться в системе к событию запуска приложения ? И перехватывать информацию о нём ? Кто-нибудь может подсказать решение ?
0
|
|||||||||||
| 15.05.2024, 13:14 | |
|
Ответы с готовыми решениями:
25
Как получить параметры активного приложения windows Как получить имя активного приложения переднего плана Android?
|
|
2673 / 1335 / 480
Регистрация: 08.11.2016
Сообщений: 3,687
|
||||||||||||||||||
| 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|