• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Резидентные программы

  • Автор темы Aliaksandar
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Aliaksandar

Люди помогите
Кароч интересно как сделать так что бы программы работала но окна не было
можно конечно скрыть окно (Form1.hide) но так не катит прога мот выполняться и будет но мне нужно что бы работала клавиатура т.е. прога отслеживала и выполняла команды с клавы но окна не было...
(если делать окно всегда поверх остальных окон и ещё скрыть его то тоже не работает)
 
B

Barmutik

Понятие "резидентная программа" отмерло ещё со времён ДОС.

Сейчас Ваш вопрос стоит о перехвате событий проходящих в системе... что бы больше об этом понимать стоит почитать любую книжку по программированию на Delphi, не верное или не совсем верное использование указанной для Вас выше функции может привести к падению системы!
 
D

_dimka_

ВАша проблема ясна, я уже делал такую ерунду.
Ответ заключается в том чтобы задать системные горячие клавиши для вашей проги.
Даже если вы будете работать в Worde и там допустим нажмете сохранить горячими клавишами.
Но ваша прога их под себя зарегистрирует, то на нажатие этих клавиш будет реагировать только ваша прога.
И также её скрыть как вам угодно.

Ниже теория

Горячие клавиши - сочетания клавиш, которые регистрируются в системе и при их нажатии система посылает сообщение WM_HOTKEY тому окну, Handle которого было заявлено при регистрации горячей клавиши. При этом не важно, имеет ли окно- получатель фокус ввода и видимо ли оно на экране. Это особенно удобно при написании резидентных программ, т.е. приложений, которые активизируются при нажатии определенных сочетаний клавиш.
Регистрация производится при помощи вызова API RegisterHotKey
function RegisterHotKey(hWnd: HWND; id: Integer; fsModifiers, vk: UINT): BOOL;
hWnd - Handle окна, которое будет получать сообщения при нажатии горячей клавиши
id - идентификатор (просто число, передаваемое в сообщении WM_HOTKEY. id позволяет приложению работать с несколькими горячими клавишами, различая их по id). Нельзя определить две горячие клавиши с одинаковым id
fsModifiers - модификаторы. Определяют, какие клавиши должны быть нажаты совместно с указанной vk. Допустимы значения: MOD_ALT - ALT, MOD_CONTROL - CTRL, MOD_SHIFT - SHIFT
vk - виртуальный код клавиши
Если горячую клавишу удается зарегистрировать, то функция возвращает TRUE.
При завершении приложения необходимо отменить регистрацию горячей клавиши при помощи вызова UnregisterHotKey. При вызве ей передается Handle окна и id горячей клавиши.

Пример:
Код:
 TForm1 = class(TForm)
 procedure FormCreate(Sender: TObject);
 procedure FormDestroy(Sender: TObject);
private
 // Обработчик сообщения WM_HOTKEY
 procedure WMHotKey(var Mess:TWMHotKey);message WM_HOTKEY;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMHotKey(var Mess: TWMHotKey);
begin
MessageBeep(0);
ShowMessage('Нажата горячая клавиша CTRL+F12');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Handle, 1 ,MOD_CONTROL, vk_F12);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(Handle, 1);
end;
 
B

Barmutik

Метод использования хоткеев это узкий случай перехвата событий. В общем случае он не пригоден для мониторинга нажатых клавиш...

Использование хуков даёт Вам более широкие возможности для обработки событий системы...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!