Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отображение окна до логина в Windows  (Прочитано 12734 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ivan
Гость
« : 09-03-2007 15:37 » 

Господа,
я разрабатываю программу(службу), где требуется вывести диалоговое окно до выполнения логина в Windows (ОС Windows XP).

Насколько я знаю, у MessageBox(a) имеется флаг, MB_SERVICE_NOTIFICATION, который позволяет сервису выводить сообщение, "пробивая" рабочий стол в том числе и до выполнения логина.

Не подскажете, нет ли каких-нибудь аналогичных флагов у диалога, или иных способов решения данной проблемы?

Фрагмент кода:

#include "PinDialog.h"

void WINAPI ServiceMain(DWORD argc,LPSTR *argv)
{
    ...
    CPinDialog d1;
    ...
    if(d1.DoModal()==IDOK)
    ...
}

Диалоговое окно выводится только после выполнения логина в Windows.
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 09-03-2007 16:17 » 

А у тебя с MessageBox ом получилось хоть?
Записан

ещё один вопрос ...
sxd
Участник

ru
Offline Offline

« Ответ #2 : 09-03-2007 17:00 » 

Хочешь вывести до окна ввода логина и пароля?
Записан
sxd
Участник

ru
Offline Offline

« Ответ #3 : 09-03-2007 17:03 » 

Тут ведь вопрос Native быть или не быть!
)))))))))))))
Записан
Ivan
Гость
« Ответ #4 : 11-03-2007 06:04 » 

MessageBox - то как раз "пробивает" рабочий стол, ставлю флаг  MB_SERVICE_NOTIFICATION и никаких проблем.

А мне нужно сделать именно диалог до, или во время появления окна выполнения логина. 

Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 12-03-2007 12:54 » 

MessageBox - то как раз "пробивает" рабочий стол, ставлю флаг  MB_SERVICE_NOTIFICATION и никаких проблем.

А мне нужно сделать именно диалог до, или во время появления окна выполнения логина. 
Сама идея встраивания каких либо диалоговых окон в сервис не правельна (так не должно быть). Сервис не имеет как токового доступа к рабочему столу (и это ему и не нужно). Но при регистрации сервиса в системе Ты можешь указать, чтобы он взаимодействовал с текушим рабочим столом (не помню какой флаг надо указывать). Но это все глупости и так не должно быть, так как сервис крутиться с системной учетной записью, а у нее нет рабочего стола. Да и вообще пользователь не должен знать, что в системе запускаются какие то дополнительные сервисы (если он не системный администратор).

Его конфигурация должна проходить при его установке. А также можно дополнительно написать утилиту, которая будет проводить его конфигурацию (кстати так и делают), а вот в ней ты можеш использовать уже какие хочешь диалоговые окна. Ведь эта утилита будет запускаться уже от имени конкретного пользователя и у нее будет свой рабочий стол (короче все как положенно). И уже она может например работать в фоновом режиме и отображать состояние сервиса, скажем с системном трее (опять повторюсь, так и делают).

Для фиксирования каких либо событий он должен писать отчеты в системные журналы. Или в свой собственный файл логов.
Записан
zubr
Гость
« Ответ #6 : 12-03-2007 17:28 » 

Ivan, можешь попробовать запускать твое окно из длл, которая запускается при загрузке User.dll (правда не уверен, что получится). Я давно, что то подобное делал, но уже подзабыл. Как это сделать:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
параметр AppInit_DLLs, тип REG_SZ имя dll-ки
Но учти, эта дллка будет запускаться при каждом вызове User.dll, то есть практически при каждом запуске GUI-приложения, и работать будет в контексте процессов запускаемых приложений.
Записан
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 15-03-2007 03:29 » 

Возможно, вам нужен Winlogon Notification Package. Это DLL, которая регистрируется в системе и затем процесс Winlogon загружает ее и может вызывать ее функции при старте операционной системы, при останове системы, при входе/выходе пользователя, при блокировании рабочей станции и т.п.
Работает в Windows 2000 и старше.

http://msdn2.microsoft.com/en-us/library/aa380545.aspx

Я делал такую DLL для отключения ненужных входящему в систему пользователю устройств, типа CDROM-ов.
Записан
Daniloff
Помогающий

ru
Offline Offline

« Ответ #8 : 21-04-2007 13:12 » 

что-то формулировка задания наводит на мысли о злонамеренности умысла Улыбаюсь
Записан
nop
Гость
« Ответ #9 : 01-05-2007 21:18 » 

http://www.google.ru/search?source=ig&hl=eng&q=gina.dll
Записан
korbian
Гость
« Ответ #10 : 17-05-2007 11:12 » 

Еще можно "поиграть" с самим winlogon. Смотри в MSDN описании библиотеки Gina.
Записан
korbian
Гость
« Ответ #11 : 17-05-2007 11:13 » new

о простите, товарищи, не обратил внимания на ссылку перед своим постом.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines