Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Сегодня :

День славянской письменности и культуры


пароль на открытие окна
На страницу 1, 2  След.

Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Пол:Муж deathraider
Постоянный участник


Возраст: 36
Знак зодиака: Дева
Зарегистрирован: 28.07.2003
Сообщения: 118
Откуда: Украина Сумы
СообщениеСр, 16-Апр-2008 14:29    Заголовок сообщения: пароль на открытие окна
Цитата

Привет всем!
Подскажите можно ли поставить пароль на открытие свернутого окна
Если да то в каком хоть направлении "копать" :)
Заранее благодарен
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеСр, 16-Апр-2008 16:40 
Цитата

В оконной функции по приходу соответствующего сообщения спрашивай пароль, и если пароль неправильный, просто не вызывай DefWindowProc. А вообще, лучше всего спроектировать логику работы программы так, чтобы не было этих извратов
_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж deathraider
Постоянный участник


Возраст: 36
Знак зодиака: Дева
Зарегистрирован: 28.07.2003
Сообщения: 118
Откуда: Украина Сумы
СообщениеСр, 16-Апр-2008 16:52 
Цитата

Прикол в том что мне нужно поставить пароль на открытие окна дрогого приложения
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Пол:Муж Шурик
Я живу тут....


Возраст: 42
Знак зодиака: Овен
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
СообщениеСр, 16-Апр-2008 17:25 
Цитата

Для этого нужно использовыать хуки. Смотри SetWindowsHookEx. Хук - это процедура, вызываемая системой по определённому событию. В твоём случае по получению сообщения окном. Поставить хук сравнительно просто. Но есть одна особенность. Хук-процедура при вызове выполняется в адресном пространстве вызвавшего её потока. Поэтому твои переменные (пароль и т.п.) ей будут недоступны.
Чаще всего хук для "чужого" процесса делают в виде отдельной dll. Но, вроде, можно и в том же ехе. Только нужно не забывать, что все данные этого ехе хуку будут не видны.

_________________
Ответ готов, готов ли твой вопрос?
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеСр, 16-Апр-2008 17:26 
Цитата

А почему бы просто скринсейвер не запаролить?
Т.к. чтобы сделать такой гемморрой, нужно написать DLL, внедрить ее в код другого приложения, перехватить там оконную функцию и в ней уже делать все вышесказанное

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж deathraider
Постоянный участник


Возраст: 36
Знак зодиака: Дева
Зарегистрирован: 28.07.2003
Сообщения: 118
Откуда: Украина Сумы
СообщениеСр, 16-Апр-2008 17:44 
Цитата

Что геморой понятно НО
если запаролить скринсейвер это будет слишком очевидно :(
все равно спасибо
буду юзать SetWindowsHookEx
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеЧт, 17-Апр-2008 4:27 
Цитата

ну как же, SetWindowsHookEx только для мониторинга событий, она не может повлиять на работу программы!
имхо только через внедрение DLL

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Шурик
Я живу тут....


Возраст: 42
Знак зодиака: Овен
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
СообщениеЧт, 17-Апр-2008 12:46 
Цитата

Да, правда. Хуки только мониторят что-либо. Я не подумал об этом.
А что тогда должна делать внедряемая DLL ?
Мне кажется тут нужно как-то перехватывать оконную процедуру и отсекать сообщения по каким-то условиям. Подменить оконную функцию -- это вроде SetWindowLong + GWL_WNDPROC.

_________________
Ответ готов, готов ли твой вопрос?
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеЧт, 17-Апр-2008 16:06 
Цитата

Цитата:
Мне кажется тут нужно как-то перехватывать оконную процедуру и отсекать сообщения по каким-то условиям. Подменить оконную функцию -- это вроде SetWindowLong + GWL_WNDPROC.

Все верно. Чтобы отменить стандартное действие, надо просто не передавать его в DefWindowProc

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеЧт, 17-Апр-2008 16:27 
Цитата

Может внедриться в эксплорер?
Ну там в boot.ini назначить вместо эксплорера свою оболочку, которая будет запускать экплорер и внедряться в него...еси долго помучиться, то получится клёвая программа =)
хотя очень бесполезная)

_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеЧт, 17-Апр-2008 19:20 
Цитата

Цитата:
Может внедриться в эксплорер?

А толку? Максимизировать окно можно и по Alt+Tab, например.

Цитата:
Ну там в boot.ini назначить вместо эксплорера свою оболочку

Это ты с Windows 95 перепутал, там в msdos.sys оболочка прописывалась

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеЧт, 17-Апр-2008 20:48 
Цитата

нифига.
alt+tab небось эксплорер перехватывает...хотя это не важно, повесить хоткей свой, он перетрёт прошлый
в boot.ini можно выставить, кажется, ключём kernel имя своей проги, вместо эксплорера и прога будет грузиться вместо стандартной оболочки (эксплорера)

_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеПт, 18-Апр-2008 9:33 
Цитата

Цитата:
alt+tab небось эксплорер перехватывает...

Неа, не перехватывает. Он процессы не переключает

Цитата:
в boot.ini можно выставить, кажется, ключём kernel имя своей проги, вместо эксплорера и прога будет грузиться вместо стандартной оболочки (эксплорера)


>>>

Цитата:
Это ты с Windows 95 перепутал, там в msdos.sys оболочка прописывалась


Думаю, твоя прога вряд ли потянет на почетное звание kernel Улыбка

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеПт, 18-Апр-2008 22:39 
Цитата

нет же, сам в XP заменял explorer в boot.ini с помощью ключа какого-то.

пока нашёл тока так
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
Shell=моя прога

Добавлено спустя 10 минут 47 секунд:

фу, вроде это
/SAFEBOOT ALTERNATESHELL=

Добавлено спустя 3 минуты 47 секунд:

в общем точняк есть, мы с другом ещё в школе вирус писали, он вместо эксплорера стартовал

Добавлено спустя 52 секунды:

ну а с alt+tab, как уже говорил, можно разобраться хуками

_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Шурик
Я живу тут....


Возраст: 42
Знак зодиака: Овен
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
СообщениеПт, 18-Апр-2008 23:00 
Цитата

http://ru.wikipedia.org/wiki/Boot.ini
http://support.microsoft.com/kb/833721/ru

Microsoft писал(а):
/kernel=имя_файла
Данный параметр позволяет указать, какое ядро необходимо загружать при загрузке операционной системы. Например, введите /kernel=ntkrnlmp.exe, чтобы загрузить ядро Ntkrnlmp.exe, находящееся в папке System32. Используя параметр /kernel, можно при загрузке выбрать обычное ядро или ядро, предназначенное для отладки и содержащее отладочную информацию.

_________________
Ответ готов, готов ли твой вопрос?
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Страница 1 из 2 На страницу 1, 2  След.
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100