Вам никогда не приходила в голову мысль о том, как бы хорошо было бы запустить соседу в Интернет-кафе на компьютер программку, которая бы читала все его нажатия на клавиши и записывала их в файл? А задумка о программе, которая будет сидеть в сис-трее, а по нажатию волшебной клавиши F12 выполнять команду "kill command.com", сопровождая процесс веселым музоном? Ну хотя бы совсем скучная мысль о программе, которая добавляет в систему парочку горячих клавиш, открывая по F3 блокнот, а по F4 пайнтбраш? Если хотя бы одна из этих мыслей посещала вашу голову, то вы наверняка
задумывались о том, как бы ухитриться читать нажатия на клавиши вне фокуса
программы. Начнем с теории: есть такая функция - замечательная функция API из юзера...
Ну то-есть из user32... Ну вы меня поняли. Называется она GetAsyncKeyState(ByVal
vKey As Long) As Integer Заметьте, что вы не проверяете, КАКАЯ клавиша нажата, как в обычной процедуре Key_Press. Вы проверяете НАЖАТА ЛИ клавиша! Это просто незаменимо, когда надо отследить нажатие нескольких клавиш одновременно, ну хотя бы Ctrl-Alt-Del. С помощью незамысловатой логики вы проверяете искомую комбинацию, и когда найдете, тут же снимаете окошечко "Завершение работы программы" обратно, откуда оно появилось. Чтобы узнать константы, которые надо подставлять в параметр vKey не надо даже думать. Все уже сделано за вас группой разработчиков Visual Basic. Например, vbKeyEscape - это Escape, vbKeyF12 - это F12... И так до упора. Удачи вам в выполнении ваших злобных замыслов и вот вам пример программы, которая выскакивает по нажатию Escape, как чертик из коробочки. Приятного программирования, Antiloop |