![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Режим выбора пользователя [D7, XP]
DiamondeX © (2010-06-19 20:25:00)Как определить, что система находится в режиме выбора пользователя, поскольку пользователь выполнил команду системы "Сменить пользователя"? Или, другими словами, как определить, что система заблокирована?
Дело в том, что выполнение некоторых функций (например, определение позиции указателя мыши с помощью Mouse.CursorPos) вызывает ошибку "Call to OS function failed". Хотелось бы избежать этой ошибки.
Winlogon (2010-06-20 20:39:00) [1]
try
Pos := Mouse.CursorPos;
except
Pos := Point(-1, -1);
end;
А потом, в зависимости от потебностей:
if (Pos.X > -1) and (Pos.Y > -1) then
begin
// Всякое разное с Pos
end;
sniknik (2010-06-20 10:30:00) [2]> Я просто пытаюсь определить положение указателя мыши. Если есть другой способ, то скажи.
сменить логику программирования, определять координаты не по таймеру (или как там у тебя), а в событиях от действию юзера... которые в локированном состоянии ни за что не произойдут.
DiamondeX (2010-06-20 08:47:00) [3]Опять ответ сам нашел )))
function IsWorkstationLocked: Boolean;
var hDesktop: HDESK;
begin
Result := False;
hDesktop := OpenDesktop('default', 0, False, DESKTOP_SWITCHDESKTOP);
if hDesktop <> 0 then begin
Result := not SwitchDesktop(hDesktop);
CloseDesktop(hDesktop);
end;
end;
Эту тему тоже можно закрыть
DiamondeX (2010-06-20 08:25:00) [4]
> Система не бывает в режиме "заблокированна"
Хорошо, я уточню: речь идет о блокировки скорее компьютера. Вот цитата с англоязычного хелпа WinXP (к сожалению, русского нет): "[WinLogoKey] + L: Lock your computerif you are connected to a network domain, or switch usersif you are not connected to a network domain. " Но сути дела это не меняет.
> А вот нехрен к ним обращатся из сервисов. Типа самый умный
> да?
Я просто пытаюсь определить положение указателя мыши. Если есть другой способ, то скажи. Если нет, то не надо флудить и выставлять себя умнее тех, кто сюда обращается.
Palladin (2010-06-19 22:01:00) [5]
> как определить, что система заблокирована?
Система не бывает в режиме "заблокированна", ну кроме DOS конечно... до старта autoexec, но эти времена давно прошли.
> Дело в том, что выполнение некоторых функций (например,
> определение позиции указателя мыши с помощью Mouse.CursorPos)
> вызывает ошибку "Call to OS function failed". Хотелось бы
> избежать этой ошибки.
А вот нехрен к ним обращатся из сервисов. Типа самый умный да?
Anatoly Podgoretsky (2010-06-19 20:44:00) [6]> DiamondeX (19.06.2010 20:30:02) [2]
Пардон перепутал
DiamondeX (2010-06-19 20:30:00) [7]Нет, они не закрыты. Это не то же самое, что "Выход из системы"! Если выбрать "Сменить пользователя", то программа продолжает работать, о чем свидетельствуют возникающие ошибки )))
Anatoly Podgoretsky (2010-06-19 20:27:00) [8]Заблокировано и логин - это разные вещи. После "смены пользователя" о твоих програмах как то говорить не приходится, они все закрыты.