| imho.ws |
![]() |
|
|
|
# 1 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
У меня следующая проблема.
Юзвери упорно отказываются выходить из системы после окончания работы. Я решил сделать screensaver, который через пять минут выдает табличку типа "Ща будет кирдык", а через минуты этот кирдык делает. Профили пользователей создается из DefaultUser. Прописал туда свою прогу. Но этот же профиль действует и на десктопе WinLogon, т.е. на экране с табличкой "Нажмите Ctrl-Alt-Del" через пять минут запускается моя прога, а мне этого не надо. Нужно чтобы она запускалась только на десктопе юзера, который (десктоп) имеет имя Default. Каким макаром в Delphi можно определить название десктопа, на котором программа запущена. Или, хотя бы, имя пользователя.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|
|
|
# 2 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
OK. Тогда объясните мне такую фигню:
Сделал ScreanSaver, переименовал LOGOFF.EXE в LOGOFF.SCR, установил на своей машине - все работает. Ставлю на студенческую - работает. Далее начинаются непонятки. Устанавливаю на другую студенческую (конфигурация такая же, что и на предыдущей), выдает ошибку (см. рис.). Запускаю exe-шник - работает. Запускаю LOGOFF.SCR - работает. Автоматически не запускается, точнее запускается, но не рабоатет (см. рис.). Создаю такой же проект на студенческой машине (WinNT4, Delphi3; у меня - Win2k, Delphi6), файл получается вдвое меньше. Запускаю exe-шник - работает, запускаю LOGOFF.SCR - работает. Автоматически - выдает ошибку. И это при том, что на WinLogon'е ошибок не выдает. ScreenSaver прописан в профиле Default User и действует на пользователя Guest и на экране WinLogon (т.е. на том экране, на котором висит табличка Нажмите Ctrl-Alt-Del). Прикол в том, что в код вставлена строка exitwindowsex(ewx_logoff,0); Но на десктопе пользователя (Default) она делает LOGOFF, а на WinLogon'е - SHUTDOWN. Мне этого не надо, и я в код, который выполняется при загрузке, вставил строки: var s: String; uname: pchar; unsiz: integer; begin ... uname := StrAlloc(255); unsiz := 254; GetUserName(uname,unsiz); if (unsiz > 0) then s := string(uname) else s := 'n/a'; StrDispose(uname); if UpperCase(s) <> 'GUEST' then Halt(0); ... end; По видимому, ошибка возникает при запуске процедуры GetUserName. Как это обойти или исправить?
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|
|
|
# 3 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я ничего не понимаю... Скринсейвер начал нормально работать после двух (не больше, не меньше) перезагрузок.
Но все-таки: как узнать имя десктопа? и как создать свой собственный (как это делает программа surrender.exe)?
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|