![]() |
Определение названия desktop'а в Delphi.
У меня следующая проблема.
Юзвери упорно отказываются выходить из системы после окончания работы. Я решил сделать screensaver, который через пять минут выдает табличку типа "Ща будет кирдык", а через минуты этот кирдык делает. Профили пользователей создается из DefaultUser. Прописал туда свою прогу. Но этот же профиль действует и на десктопе WinLogon, т.е. на экране с табличкой "Нажмите Ctrl-Alt-Del" через пять минут запускается моя прога, а мне этого не надо. Нужно чтобы она запускалась только на десктопе юзера, который (десктоп) имеет имя Default. Каким макаром в Delphi можно определить название десктопа, на котором программа запущена. Или, хотя бы, имя пользователя. |
Вложений: 1
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. Как это обойти или исправить? |
Я ничего не понимаю... Скринсейвер начал нормально работать после двух (не больше, не меньше) перезагрузок.
Но все-таки: как узнать имя десктопа? и как создать свой собственный (как это делает программа surrender.exe)? |
| Часовой пояс GMT +4, время: 15:50. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.