| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Переключение между desktop-ами |
| Автор: Гест 18.4.2006, 01:01 |
| Здравствуйте. Что я имею ввиду... В процессе авторизации в Win2k и далее возникает модальное окно с надписью "Нажмите CTRL+ALT+DEL..." Мне нужно послать этому окну сообщение. Но, насколько я знаю, Winlogon.exe, вызывающий это окно, работает в другом desktop-е (из соображений безопасности) Может кто-нибудь уже сталкивался с этой задачей? Кусочек работоспособного кода был бы очень кстати... |
| Автор: _hunter 18.4.2006, 10:50 |
| а смысл? ( точнее для чего это нужно -- может проблему другими способами решить можно ) |
| Автор: adonin 18.4.2006, 10:57 |
Это как? |
| Автор: Гест 18.4.2006, 11:09 |
| Как - это не ко мне, а к Microsoft А смысл в том, что пишу свой модуль авторизации в Винде (aka GINA), причем проводится проверка не только логина/пароля, но и, например, смарт-карты. Так вот, хочется сделать так, чтобы начать процесс ввода пароля можно было только после поднесения карты к считывателю, а не по нажатию клавиатуры. Поэтому надо отправить сообщение этому окну, а оно затем сгенерит SAS-событие |
| Автор: Гест 18.4.2006, 12:30 | ||
| Читал. Есть и получше: http://msdn.microsoft.com/msdnmag/issues/05/05/SecurityBriefs/ http://msdn.microsoft.com/msdnmag/issues/05/06/SecurityBriefs/ Но!!!!
Усилю - не хочется, а надо. А для этого НАДО отправить сообщение этому диалогу. |
| Автор: _hunter 18.4.2006, 13:03 | ||
уточню:
вывод: ты можеш нарисовать и показать любой диалог. даже начинающий процесс ввода только после поднесения карты к считывателю, а не по нажатию клавиатуры. |
| Автор: Гест 18.4.2006, 14:16 |
| Все верно. Даже более того - все это сделано. Один нюанс. Поскольку я переделываю диалоги, следовательно и функции окна у меня должны быть свои. Именно функция окна вызывает WlxSasNotify. Проблема в том, как сказать этому окну, когда ему надо вызывать WlxSasNotify. В принципе, есть наметки решения... С помощью EnumDesktops получаешь список всех desktop-ов в системе, выбираешь нужный и переключаешься на него. Попробовал - говорит Access denied. Возможные решения вновь возникшей проблемы? |
| Автор: SergeCpp 18.4.2006, 14:27 |
| А почему бы не использовать один из типов Interprocess Communications? Типа Mutex etc.? Или QueueUserAPC ? То есть, не оконными сообщениями... |
| Автор: _hunter 18.4.2006, 14:31 |
| т.е. от извращений со столами мы ушли. а пришли мы к проблемы межпроцесного взаимодействия. например http://forum.vingrad.ru/index.php?showtopic=83696 обсуждали подобный вопрос |
| Автор: Гест 18.4.2006, 14:40 |
| Хмммм... Можно попробовать... |