Здравствуйте Evgen, Вы писали:
E>Здравствуйте, все!
E>Вопрос по клавиатурному Hook'у.
E>Есть необходимость сделать активизацию своей программы по нажатию определенной комбинации клавиш (кто знает, это как в Сократе'97-переводчике). E>То есть: E>1. Пользователь в программе задает комбинацию клавиш; E>2. Программа инициализирует клавиатурный Hook, где при инициализации в переменные (из DLL(!)) записывает код этой комбинации. E>3. В Hook'е при нажатии клавиш сравниваются коды нажатых клавиш и той комбинации, что в переменных (из DLL(!)). Если они совпадают, происходит активизация моей программы (если она свернута или неактивна).
E>Так вот ПРОБЛЕМА: E>Переменные из DLL содержат код клавиши всплытия ТОЛЬКО когда моя программа АКТИВНА, иначе там ноль. Как следствие, если программа неактивна, то Hook обрабатывается, но коды клавиш, даже если нажата нужная комбинация не отрабатываются и программа не активизируется. E>Впечатление, что эти переменные из DLL принадлежат области видимости переменных только моей программы, но они-то описаны в DLL!
E>Почему? Работает ли подобное под Delphi'ями или может есть отличия в работе при описании переменных в DLL на Delphi и BCB? Вроде как один пень, где делать, модуль-то независим от языка!
E>P.S. Если вариант, что мне нужен не проходит, то как реализовать его, если еще учесть, что: E> 1. Нежелательно использование реестра для хранения комбинации клавиш; E> 2. Нежелательно использование временного файла.
E>P.S.2. Если вдруг необходимо — DLL создается без VCL.
E>Спасибо, до свидания.
Лучше писать на Асме так как в Дельфи придется использовать временные файлы и т.д.. А в Асме линкеру задаешь доп-й атрибут /section:.bss,S при линковке dll — это сделает переменные разделяемыми для всех процессов использующих этот dll.