Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.12;
Скачать: CL | DM;

Вниз

Режим выбора пользователя   Найти похожие ветки 

 
DiamondeX ©   (2010-06-19 20:25) [0]

Как определить, что система находится в режиме выбора пользователя, поскольку пользователь выполнил команду системы "Сменить пользователя"? Или, другими словами, как определить, что система заблокирована?
Дело в том, что выполнение некоторых функций (например, определение позиции указателя мыши с помощью Mouse.CursorPos) вызывает ошибку "Call to OS function failed". Хотелось бы избежать этой ошибки.


 
Anatoly Podgoretsky ©   (2010-06-19 20:27) [1]

Заблокировано и логин - это разные вещи. После "смены пользователя" о твоих програмах как то говорить не приходится, они все закрыты.


 
DiamondeX ©   (2010-06-19 20:30) [2]

Нет, они не закрыты. Это не то же самое, что "Выход из системы"! Если выбрать "Сменить пользователя", то программа продолжает работать, о чем свидетельствуют возникающие ошибки )))


 
Anatoly Podgoretsky ©   (2010-06-19 20:44) [3]

> DiamondeX  (19.06.2010 20:30:02)  [2]

Пардон перепутал


 
Palladin ©   (2010-06-19 22:01) [4]


> как определить, что система заблокирована?

Система не бывает в режиме "заблокированна", ну кроме DOS конечно... до старта autoexec, но эти времена давно прошли.

> Дело в том, что выполнение некоторых функций (например,
> определение позиции указателя мыши с помощью Mouse.CursorPos)
> вызывает ошибку "Call to OS function failed". Хотелось бы
> избежать этой ошибки.

А вот нехрен к ним обращатся из сервисов. Типа самый умный да?


 
DiamondeX ©   (2010-06-20 08:25) [5]


> Система не бывает в режиме "заблокированна"

Хорошо, я уточню: речь идет о блокировки скорее компьютера. Вот цитата с англоязычного хелпа WinXP (к сожалению, русского нет): "[WinLogoKey] + L: Lock your computer if you are connected to a network domain, or switch users if you are not connected to a network domain. " Но сути дела это не меняет.


> А вот нехрен к ним обращатся из сервисов. Типа самый умный
> да?


Я просто пытаюсь определить положение указателя мыши. Если есть другой способ, то скажи. Если нет, то не надо флудить и выставлять себя умнее тех, кто сюда обращается.


 
DiamondeX ©   (2010-06-20 08:47) [6]

Опять ответ сам нашел )))

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;


Эту тему тоже можно закрыть


 
sniknik ©   (2010-06-20 10:30) [7]

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


 
Winlogon   (2010-06-20 20:39) [8]


 try
   Pos := Mouse.CursorPos;
 except
   Pos := Point(-1, -1);
 end;


А потом, в зависимости от потебностей:


 if (Pos.X > -1) and (Pos.Y > -1) then
 begin
   // Всякое разное с Pos
 end;



Страницы: 1 вся ветка

Текущий архив: 2010.09.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
15-1275932643
test
2010-06-07 21:44
2010.09.12
База данных Delphi?


15-1276687464
HTCppcpcpc
2010-06-16 15:24
2010.09.12
HTC


2-1276375219
AKE
2010-06-13 00:40
2010.09.12
Как получить координаты всех точек?


4-1240162200
alex870
2009-04-19 21:30
2010.09.12
Какой файл проигрывает Windows Media Player


2-1273666789
Igor_VM
2010-05-12 16:19
2010.09.12
Обмен сообщениями в формате XML по протоколу HTTPS