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

Вниз

Програмно выключить монитор   Найти похожие ветки 

 
deamon_t   (2005-08-30 23:05) [0]

Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не видели монитор. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.

Заранее большое спасибо за ответы.


 
Rentgen ©   (2005-08-31 07:55) [1]

Что то типа этого :
1 или 0
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,1);

Только поиню какие то глюки с ВКЛЮЧЕНИЕМ были ;)


 
deamon_t   (2005-08-31 09:07) [2]

Если было все так просто :-(,
SendMessage(Application.Handle,wm_SysCommand,SC_MonitorPower,1);
это тоже самое, в мсдн написано что 1 это энергосберегающий режим, а 2 это выключение монитора, но я в них разницы не увидел. Сразу предупреждаю что значения LParam равные 0 и -1 катят наверное только  в 98 виндоусе, покрайней мере в 2000/ХР не работают точно. Может есть какойто другой способ, или можно както отучить чтобы при нажатии на клавиатуру или мышку монитор не включался, очень нада!


 
Ботвин Дмитрий   (2005-08-31 09:36) [3]

deamon_t   (31.08.05 09:07) [2]

>Может есть какойто другой способ, или можно както отучить чтобы при нажатии на клавиатуру или мышку монитор не включался

Это тока кнопкой Power. Программно выключить монитор нельзя - можно только перевести его в ждущий режим!


 
deamon_t   (2005-08-31 13:47) [4]

Ботвин Дмитрий   (31.08.05 09:36) [3]

>Программно выключить монитор нельзя - можно только перевести его в ждущий режим!

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


 
deamon_t   (2005-08-31 21:00) [5]

Ндя, тишина :-(


 
Ботвин Дмитрий   (2005-09-01 13:33) [6]

Вопрос: А как тогда монитор выйдет из ждущего режима для дальнейшей работы?


 
deamon_t   (2005-09-01 17:17) [7]

Ботвин Дмитрий   (01.09.05 13:33) [6]

Монитор выключиться, но удаленный монитор будет видно через RAdmin...


 
Ботвин Дмитрий   (2005-09-02 08:14) [8]

deamon_t   (01.09.05 17:17) [7]

Про RAdmin - это понятно. Надо тока предусмотреть включение монитора на удаленном компе, иначе как юзер работать продолжит?
Решение твоей задачи примерно таково:
Засаживаешь на удаленном компе клиента, который делает следующие
действия:

1.Отключает клаву и мышь на этом компе.
2.Переводит монитор в ждущий режим с помощью SendMessage
3.После окончания твоих действий включает клаву и мышь.
4.Выводит монитор из ждущего режима опять через SendMessage.

Вот и весь алгоритм. Если будут трудности с реализацией пиши, поможем...


 
deamon_t   (2005-09-02 09:06) [9]

Ботвин Дмитрий   (02.09.05 08:14) [8]

А как отключить клавиатуру и мышь? Функция BlockInput не работает, клавиатура блокируеться но при нажатии на клавишу монитор всеравно выходит из standby :-( Видел ещё функцию EnableHardwareInput в файле user.exe но это не PE файл. Поэтому оттуда её вытащить нельзя.


 
Котик Бегемотик   (2005-09-02 09:17) [10]

Будучи юзером - убил бы за такую самодеятельность !!!

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


 
Ботвин Дмитрий   (2005-09-02 13:07) [11]

Вот модуль блокировки и разблокировки системы, взятый мной откуда то с инета. Проверено - работает.

unit LockSys;

interface
uses
 Windows;

type
 TLockMode = (lmInput, lmSystemKeys, lmBoth);

function FuncAvail(_dllname, _funcname: string; var _p: pointer): boolean;
function LockSystem(LockMode: TLockMode): Boolean;
function UnLockSystem(UnLockMode: TLockMode): Boolean;

var
 xBlockInput: function(Block: BOOL): BOOL; stdcall;

implementation

function FuncAvail(_dllname, _funcname: string; var _p: pointer): boolean;
var
 _lib: tHandle;
begin
 Result := false;
 _p := nil;
 if LoadLibrary(PChar(_dllname)) = 0 then
   exit;
 _lib := GetModuleHandle(PChar(_dllname));
 if _lib <> 0 then
 begin
   _p := GetProcAddress(_lib, PChar(_funcname));
   if _p <> nil then
     Result := true;
 end;
end;

function LockSystem(LockMode: TLockMode): Boolean;
begin
 Result := False;

 if LockMode = lmSystemKeys then //Locking system
   if not SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, nil, 0) then
     Exit;

 if LockMode = lmInput then //locking keyb and mouse
   if FuncAvail("USER32.DLL", "BlockInput", @xBlockInput) then
     xBlockInput(true)
   else
     Exit;

 if LockMode = lmBoth then
 begin
   if not SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, nil, 0) then
     Exit;
   if FuncAvail("USER32.DLL", "BlockInput", @xBlockInput) then
     xBlockInput(true)
   else
     Exit;
 end;

 Result := True;
end;

function UnLockSystem(UnLockMode: TLockMode): Boolean;
begin
 Result := False;

 if UnLockMode = lmSystemKeys then //UnLocking system
   if not SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, nil, 0) then
     Exit;

 if UnLockMode = lmInput then //unlocking keyb and mouse
   if FuncAvail("USER32.DLL", "BlockInput", @xBlockInput) then
     xBlockInput(false)
   else
     Exit;

 if UnLockMode = lmBoth then
 begin
   if not SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, nil, 0) then
     Exit;
   if FuncAvail("USER32.DLL", "BlockInput", @xBlockInput) then
     xBlockInput(false)
   else
     Exit;
 end;

 Result := True;
end;

end.

Пример использования:

LockSystem(lmBoth); // Блокировка всей системы
UnLockSystem(lmInput); // Разблокировка клавы и мыши


 
deamon_t   (2005-09-02 13:11) [12]

Котик Бегемотик   (02.09.05 09:17) [10]

Спасибо за "особо ценное" замечание...



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

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

Наверх




Память: 0.5 MB
Время: 0.067 c
14-1129384606
Piter
2005-10-15 17:56
2005.11.06
Подскажите где скачать кодек MPEG2


9-1117662227
Темас
2005-06-02 01:43
2005.11.06
Реалистичная траектория падения снежинки Как сделать ?


1-1129290248
Lirik
2005-10-14 15:44
2005.11.06
Запретить двигать формой


2-1129109140
L*D
2005-10-12 13:25
2005.11.06
Как спрятать консолевое приложение?


14-1129622362
WondeRu
2005-10-18 11:59
2005.11.06
Delphi 2006 - что ждете от новой IDE?