imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 21.01.2003, 17:25     # 1
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Red face Определение названия desktop'а в Delphi.

У меня следующая проблема.

Юзвери упорно отказываются выходить из системы после окончания работы. Я решил сделать screensaver, который через пять минут выдает табличку типа "Ща будет кирдык", а через минуты этот кирдык делает. Профили пользователей создается из DefaultUser. Прописал туда свою прогу. Но этот же профиль действует и на десктопе WinLogon, т.е. на экране с табличкой "Нажмите Ctrl-Alt-Del" через пять минут запускается моя прога, а мне этого не надо. Нужно чтобы она запускалась только на десктопе юзера, который (десктоп) имеет имя Default.

Каким макаром в Delphi можно определить название десктопа, на котором программа запущена. Или, хотя бы, имя пользователя.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 22.01.2003, 23:03     # 2
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Angry

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. Как это обойти или исправить?
Изображения
Тип файла: gif error.gif (2.6 Кбайт, 5 просмотров - Кто скачивал? )
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 23.01.2003, 19:59     # 3
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Red face

Я ничего не понимаю... Скринсейвер начал нормально работать после двух (не больше, не меньше) перезагрузок.

Но все-таки: как узнать имя десктопа? и как создать свой собственный (как это делает программа surrender.exe)?
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 17:35.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.