Погружение монитора в спячку - какая API функция?
От: ZYV Россия  
Дата: 08.08.03 20:14
Оценка:
Здравствуйте, господа программеры.

Посоветуйте пожалуйста, какой мне API функцией следует воспользоваться, чтобы "усыпить" монитор. Дело в том, что есть в Windows в аплете контрольной панели "Управление электропитанием" во вкладке "Схемы энергосбережения" параметры успления монитора. Так вот, мне бы хотелось иметь возможность его так же усыплять, только сразу же, путем запускания специальной маленькой программки. Программка, я так понимаю, как и выдвигатель CD по стилю должна состоять из нескольких API функций...

Вопрос только каких?

Искал, я искал в MSDN, но так ни до чего и не доискался. Т.е. я доискался до сняти показаний батарей, но в общем-то ничего более не нашел Может кто знает функцию для усыпления монитора ?

Спасибо,
Юрий.
Re: Погружение монитора в спячку - какая API функция?
От: Alex Fedotov США  
Дата: 08.08.03 20:41
Оценка: 2 (1)
Здравствуйте, ZYV, Вы писали:

ZYV>Искал, я искал в MSDN, но так ни до чего и не доискался. Т.е. я доискался до сняти показаний батарей, но в общем-то ничего более не нашел Может кто знает функцию для усыпления монитора ?


SC_MONITORPOWER.
-- Alex Fedotov
Re: Погружение монитора в спячку - какая API функция?
От: Ignoramus  
Дата: 09.08.03 07:58
Оценка: 1 (1)
Здравствуйте, ZYV, Вы писали:

ZYV>Здравствуйте, господа программеры.


ZYV>Посоветуйте пожалуйста, какой мне API функцией следует воспользоваться, чтобы "усыпить" монитор. Дело в том, что есть в Windows в аплете контрольной панели "Управление электропитанием" во вкладке "Схемы энергосбережения" параметры успления монитора. Так вот, мне бы хотелось иметь возможность его так же усыплять, только сразу же, путем запускания специальной маленькой программки. Программка, я так понимаю, как и выдвигатель CD по стилю должна состоять из нескольких API функций...


ZYV>Вопрос только каких?


ZYV>Искал, я искал в MSDN, но так ни до чего и не доискался. Т.е. я доискался до сняти показаний батарей, но в общем-то ничего более не нашел Может кто знает функцию для усыпления монитора ?


ZYV>Спасибо,

ZYV>Юрий.

Тут есть более интересный вопрос: как его потом пробуждать? Можно, конечно, той же WM_SYSCOMMAND + SC_MONITORPOWER + -1, но есть у меня такое подозрение, что другие программы делают это не так... а как, интересно?
Re[2]: Погружение монитора в спячку - какая API функция?
От: ZYV Россия  
Дата: 09.08.03 09:03
Оценка:
Здравствуйте,

Спасибо всем за ответы!

Ignoramus, Вы писали:

I>Тут есть более интересный вопрос: как его потом пробуждать? Можно, конечно, той же WM_SYSCOMMAND + SC_MONITORPOWER + -1, но есть у меня такое подозрение, что другие программы делают это не так... а как, интересно?


Эээ... Действительно, это интересный вопрос. Я даже не подумал как-то, что его потом надо будет будить

А не могли бы вы заодно объяснить мне куда эти сообщения надо посылать? Что-то я не понимаю, честное слово. Написал вот как:


procedure TForm1.Button1Click(Sender: TObject);
var
  mh: integer;
begin

  mh := GetSystemMenu(Form1.Handle, false);

  SendMessage(mh, WM_SYSCOMMAND, SC_MONITORPOWER, LPARAM(2));

  Sleep(3000);

  SendMessage(mh, WM_SYSCOMMAND, SC_MONITORPOWER, LPARAM(-1));

end;



Но что-то не фуричит оно

Спасибо,
Юрий.
Re[3]: Погружение монитора в спячку - какая API функция?
От: ZYV Россия  
Дата: 09.08.03 09:21
Оценка:
Здравствуйте,

УРА!!! Я нашел рещение проблеммы. Вот код на Delphi:


Question:
How can I turn an low power compliant monitor off?

Answer:
You can send a wm_SysCommand message with the WParam parameter set
to SC_MonitorPower and the LParam parameter set to 0 to turn the
monitor off, and -1 to turn the monitor back on. The following example
turns the monitor off for a 10 second interval.

Example:

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    MonitorOff : bool;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled := false;
  Timer1.Interval := 10000;
  MonitorOff := false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if MonitorOff then begin
    MonitorOff := false;
    SendMessage(Application.Handle,
                wm_SysCommand,
                SC_MonitorPower,
                -1);
    Timer1.Enabled := false;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MonitorOff := true;
  Timer1.Enabled := true;
  SendMessage(Application.Handle,
              wm_SysCommand,
              SC_MonitorPower,
              0);
end;



Спасибо большое Alex Fedotov'у за бесценное указание на то, что следует искать!

WBR,
Юрий.
Re[4]: Погружение монитора в спячку - какая API функция?
От: dmitrijj noskov Россия  
Дата: 19.06.06 09:49
Оценка:
Здравствуйте, ZYV, Вы писали:

ZYV>Здравствуйте,


ZYV>УРА!!! Я нашел рещение проблеммы. Вот код на Delphi:



ZYV>[pascal]

ZYV>Question:
ZYV>How can I turn an low power compliant monitor off?

ZYV>Answer:

ZYV>You can send a wm_SysCommand message with the WParam parameter set
ZYV>to SC_MonitorPower and the LParam parameter set to 0 to turn the
ZYV>monitor off, and -1 to turn the monitor back on. The following example
ZYV>turns the monitor off for a 10 second interval.

в Windows 2000 Server SP 4 для того чтобы потушить монитор вместо 0 надо указать 1.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.