Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перехват Alt+Tab

4.1K
06 апреля 2004 года
sonjia
38 / / 06.04.2004
Уважаемые ТОВАРИЩИ!
Мне интересно как можно в Win 2k и XP перехватывать нажатие сочетания клавиш Alt+Tab. (ТОЛЬКО ДЛЯ NT GetSystemInfo или что-то там на подобие, если я не ошибаюсь, не подходит!!!). Повесить на него что-нибудь свое...
PS: Я не собираюсь писать злостные программы, мне просто интересно, ведь в Quake III это сделали, значит можно.
PPS: Могу поделиться перехватом Ctrl+Alt+Delete в Win 2k и XP (тоже мне очень безопасные системы!!!)
2.4K
07 апреля 2004 года
nihil
56 / / 28.02.2004
Цитата:
Originally posted by sonjia
PPS: Могу поделиться перехватом Ctrl+Alt+Delete в Win 2k и XP (тоже мне очень безопасные системы!!!)



хех... могу поделиться подменой вектора прерывания обработчика клавиатуры... :D :P ;) :}
сорри за оффтопик.

2
07 апреля 2004 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by nihil


хех... могу поделиться подменой вектора прерывания обработчика клавиатуры... :D :P ;) :}
сорри за оффтопик.



кинь в приват мейл, у меня где-то исходники валялись...

4.1K
07 апреля 2004 года
sonjia
38 / / 06.04.2004
Цитата:
Originally posted by nihil


хех... могу поделиться подменой вектора прерывания обработчика клавиатуры... :D :P ;) :}
сорри за оффтопик.



Очень интересно!... И как? Заранее благодарен.

4.1K
07 апреля 2004 года
sonjia
38 / / 06.04.2004
Цитата:
Originally posted by squirL


кинь в приват мейл, у меня где-то исходники валялись...



OK

356
07 апреля 2004 года
molnij
159 / / 20.06.2000
не думаю, что перехват вектра прерываний поможет.

винда, тем более 2000/ХР должна забить на любые попытки перехвата вектора прерываний...
а вот порты ввода-вывода доступны всегда :)

а твой перехват A-C-D будет работать под юзверем, не имеющем никаких прав?

и, господа, если есть исходники, выкладывайте их здесь - подумайте о подростающих поколениях :) - не будут же найдя пост через полгода слать мыло с невнятной просьбой выслать что-то.
конечно, если у вас исходник в архиве весит больше 100кб, тогда ничего не получиться... но тогда вас можно объявлять богами и преклоняться в ночь с четверга на пятницу :)
4.1K
07 апреля 2004 года
sonjia
38 / / 06.04.2004
В принципе пример не мой, я его нашел как-то в бескрайних просторах Интернета (хотя я его немного переделал, теперь сие перехватывает Alt+Ctrl+Delete и Ctrl+Shift+Esc и ничего не делает). Автора не знаю.
Метод основан на просачивании в winlogon и извращении SAS. Оформлен в виде DLL. Что касается прав то это зависит от проги которая сие в winlogon доставит.

ЗЫ: Кому принадлежит окно, которое возникает при нажатии Alt+Tab
4.6K
07 апреля 2004 года
mustlive
37 / / 27.03.2004
Цитата:
Originally posted by sonjia
В принципе пример не мой, я его нашел как-то в бескрайних просторах Интернета (хотя я его немного переделал, теперь сие перехватывает Alt+Ctrl+Delete и Ctrl+Shift+Esc и ничего не делает). Автора не знаю.
Метод основан на просачивании в winlogon и извращении SAS. Оформлен в виде DLL. Что касается прав то это зависит от проги которая сие в winlogon доставит.



Пример проверерен на WinXP. Не работает (FindWindow возвращает NULL)

4.1K
07 апреля 2004 года
sonjia
38 / / 06.04.2004
Цитата:
Originally posted by mustlive


Пример проверерен на WinXP. Не работает (FindWindow возвращает NULL)



Что честно говоря очень странно!!! У меня работает!!! Какой WinXP??? У меня Professional sp1, хотя помниться и без sp1 работал. Сколько прав у пользователя??? Чем и куда внедряешь???
Вот на всякий случай откомпилированный вариант.

4.6K
07 апреля 2004 года
mustlive
37 / / 27.03.2004
Цитата:
Originally posted by sonjia


Что честно говоря очень странно!!! У меня работает!!! Какой WinXP??? У меня Professional sp1, хотя помниться и без sp1 работал. Сколько прав у пользователя??? Чем и куда внедряешь???
Вот на всякий случай откомпилированный вариант.



Windows XP SP2ru.

Вот простой пример (в данном случае на билдере, ну да это пофигу):

void __fastcall TForm1::Button1Click(TObject *Sender) {

HWND g_hSASwnd= NULL;
g_hSASwnd = FindWindow( TEXT("SAS Window class"), TEXT("SAS window") ); // после выполнения FindWindow в g_hSASwnd находится NULL, что означает, что такое окно не найдено. Упссс

return;

}

2.4K
08 апреля 2004 года
nihil
56 / / 28.02.2004
Цитата:
Originally posted by molnij
не думаю, что перехват вектра прерываний поможет.

винда, тем более 2000/ХР должна забить на любые попытки перехвата вектора прерываний...
а вот порты ввода-вывода доступны всегда :)

а твой перехват A-C-D будет работать под юзверем, не имеющем никаких прав?



ну с портами все ясно... а на счет "забить" ты думаешь? я, если честно не пробовал в 2000...
в 9x этот фокус всегда срабатывал и добраться в ring-0 нефиг делать... а на счет 2000...
де-то у меня был исходник чьего-то виря для NT такого способа действия - вроде работает... ну я еще сам попробую...

4.1K
08 апреля 2004 года
sonjia
38 / / 06.04.2004
Цитата:
Originally posted by mustlive


Windows XP SP2ru.

Вот простой пример (в данном случае на билдере, ну да это пофигу):

void __fastcall TForm1::Button1Click(TObject *Sender) {

HWND g_hSASwnd= NULL;
g_hSASwnd = FindWindow( TEXT("SAS Window class"), TEXT("SAS window") ); // после выполнения FindWindow в g_hSASwnd находится NULL, что означает, что такое окно не найдено. Упссс

return;

}



Если я правильно понял, то на форме есть кнопка, нажатие на которую вызывает вышеприведенный код?... Этот пример может простой, но неправильный!!! Дело в том, что окно, которое получает сообщение о нажатии кнопок Ctrl+Alt+Delete принадлежит процессу Winlogon (окно SAS window). ВыньДОС пытается скрыть это окно, на всякий случай. Необходимо сделать так, что бы этот исполняемый код прежде оказался внутри процесса Winlogon. По этому все это и сделано в DLL (хотя можно сделать по другому). Эту самую DLL и нужно запихивать в Winlogon с помощью любой предназначенной для этого утилиты. Вот мой пример такой утилиты (в main.cpp вызывается две функции для внедрения и извлечения, лишнее вычеркнуть, ProcID должен содержать ID Winlogon’а (!!!!!!!!!!!), Path – путь к библиотеке (SAS.dll))

4.6K
08 апреля 2004 года
mustlive
37 / / 27.03.2004
Цитата:
Originally posted by sonjia


ВыньДОС пытается скрыть это окно, на всякий случай. Необходимо сделать так, что бы этот исполняемый код прежде оказался внутри процесса Winlogon. По этому все это и сделано в DLL (хотя можно сделать по другому). Эту самую DLL и нужно запихивать в Winlogon с помощью любой предназначенной для этого утилиты.


Это происходит "на лету" или чтобы C-A-D перестал работать, нужно перегружать компьютер?

4.1K
08 апреля 2004 года
sonjia
38 / / 06.04.2004
Цитата:
Originally posted by mustlive

Это происходит "на лету" или чтобы C-A-D перестал работать, нужно перегружать компьютер?



А что есть проблемы??????
Конечно “на лету". Я скинул исходник (выше!) с помощью которого можно впихнуть SAS.dll в процесс Winlogon. Вызвав функцию InjectLibW можно впихнуть все это дело (главное правильно параметры передать). Первый параметр ID Winlogon’а узнать его можно или программно (в исходнике нет такой возможности!) или вручную. Запустив диспетчер задач, Меню->Вид->Выбрать столбцы..., поставить галочку «Идентиф. Процесса (PID)», OK, найти в списке процессов процесс winlogon.exe, посмотреть его PID, предать функции в качества первого параметра (внимание! Если вы выключите кимпутер или решите его перезагрузите по собственному желания, PID Winlogon’а может поменяться!!!). Второй параметр это полный путь к файлу SAS.dll (Смотри еще выше, только не очень высоко :) ).
EjectLibW извлекает все это. Параметры те же!!!
Если будут проблемы или вопросы постараюсь терпеливо их решить или ответить.

4.6K
08 апреля 2004 года
mustlive
37 / / 27.03.2004
Цитата:
Originally posted by sonjia


А что есть проблемы??????
Конечно “на лету". Я скинул исходник (выше!) с помощью которого можно впихнуть SAS.dll в процесс Winlogon. Вызвав функцию InjectLibW можно впихнуть все это дело (главное правильно параметры передать). Первый параметр ID Winlogon’а узнать его можно или программно (в исходнике нет такой возможности!) или вручную. Запустив диспетчер задач, Меню->Вид->Выбрать столбцы..., поставить галочку «Идентиф. Процесса (PID)», OK, найти в списке процессов процесс winlogon.exe, посмотреть его PID, предать функции в качества первого параметра (внимание! Если вы выключите кимпутер или решите его перезагрузите по собственному желания, PID Winlogon’а может поменяться!!!). Второй параметр это полный путь к файлу SAS.dll (Смотри еще выше, только не очень высоко :) ).
EjectLibW извлекает все это. Параметры те же!!!
Если будут проблемы или вопросы постараюсь терпеливо их решить или ответить.



Ругается на блок try. __leave не понимает, и еще с приведением типов кое-какие траблы. Ну ладно, основную мысль я понял - добываешь задачу Winlogon и вешаешь свой обработчик событий, если кратко. А с Alt-Tab такая же фишка не прокатывает? Его другой процесс обрабатывает, получается?

4.1K
09 апреля 2004 года
sonjia
38 / / 06.04.2004
Цитата:
Originally posted by mustlive


Ругается на блок try. __leave не понимает, и еще с приведением типов кое-какие траблы. Ну ладно, основную мысль я понял - добываешь задачу Winlogon и вешаешь свой обработчик событий, если кратко. А с Alt-Tab такая же фишка не прокатывает? Его другой процесс обрабатывает, получается?



В том-то вся и проблема! Я не знаю кто обрабатывает Alt+Tab!!! Пытался определить кому принадлежит окошко, которое выскакивает при переключение задач, но пока без успеха. В Интернете как-то натыкался на то, что это окошко принадлежит ядру (???!!!), но больше я ничего не знаю!!!

PS: Убейте все проверки!!! Или посмотрите, как их надо переделать под билдер, я работаю в Visual C++ .NET

4.6K
09 апреля 2004 года
mustlive
37 / / 27.03.2004
Цитата:
Originally posted by sonjia


В том-то вся и проблема! Я не знаю кто обрабатывает Alt+Tab!!! Пытался определить кому принадлежит окошко, которое выскакивает при переключение задач, но пока без успеха. В Интернете как-то натыкался на то, что это окошко принадлежит ядру (???!!!), но больше я ничего не знаю!!!

PS: Убейте все проверки!!! Или посмотрите, как их надо переделать под билдер, я работаю в Visual C++ .NET


У меня другой вопрос: а откуда взялись файлы с названиями Nt*.cpp и Nt*.h???

Скорее всего, окошко Alt-Tab принадлежит диспетчеру задач, по логике. IMHO

4.1K
09 апреля 2004 года
sonjia
38 / / 06.04.2004
Цитата:
Originally posted by mustlive

У меня другой вопрос: а откуда взялись файлы с названиями Nt*.cpp и Nt*.h???

Скорее всего, окошко Alt-Tab принадлежит диспетчеру задач, по логике. IMHO



Это веселые файлы, в которых определены функции, которые необходимы для получения кучи полезной информации о процесса (в частности о загруженных модулях).

Если речь идет о «Диспетчере задач Windows», то я могу с уверенностью сказать, что они не как не связанный!

4.6K
09 апреля 2004 года
mustlive
37 / / 27.03.2004
Цитата:
Originally posted by sonjia


Это веселые файлы, в которых определены функции, которые необходимы для получения кучи полезной информации о процесса (в частности о загруженных модулях).


А откуда они взялись? Это написал какой-то чел, или это часть MSDN?

Цитата:

Если речь идет о «Диспетчере задач Windows», то я могу с уверенностью сказать, что они не как не связанный!


Кто с кем? Окно Alt-Tab с диспетчером задач? А если вместо Explorer загрузить другую оболочку, будет ли выполняться Alt-Tab???

4.1K
09 апреля 2004 года
sonjia
38 / / 06.04.2004
Цитата:
Originally posted by mustlive

А откуда они взялись? Это написал какой-то чел, или это часть MSDN?


Кто с кем? Окно Alt-Tab с диспетчером задач? А если вместо Explorer загрузить другую оболочку, будет ли выполняться Alt-Tab???



Источник файлов не помню! Давно они у меня...

С Explorer не связанно это факт! (хотя лично я не проверял!) Все это сидит где-то глубже...

2
13 апреля 2004 года
squirL
5.6K / / 13.08.2003
вот... нашел... может запоздало, но тем не менее держите.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог