Компонент PowerControl

Вопрос: А как реализовать в одном компоненте такие функции как выключение компьютера, перезагрузка, завершение сеанса работы пользователя, Eject CD, выключение питания монитора и т.д.? Ответ: предлагаем посмотреть следующий пример ...

procedure TForm1.Button1Click(Sender: TObject);

begin

 PowerControl1.Action:=actCDEject;// Или... actLogOFF, actShutDown...

 PowerControl1.Execute;

end;

Component Code:
unit PowerControl;

interface

uses WinTypes, WinProcs, Messages, SysUtils, Classes, Controls,

  Forms, Graphics, MMSystem;

type

  TAction = (actLogOFF,actShutDown,actReBoot,actForce,actPowerOFF,

actForceIfHung,actMonitorOFF,actMonitorON,actCDEject,actCDUnEject);

type

 TPowerControl = class(TComponent)

  private

  FAction : TAction;

  procedure SetAction(Value : TAction);

  protected

  public

  function Execute : Boolean;

  published

  property Action : TAction read FAction write SetAction;

 end;

procedure Register;

implementation

procedure Register;

begin

  RegisterComponents('K2', [TPowerControl]);

end;

procedure TPowerControl.SetAction(Value : TAction);

begin

  FAction := Value;

end;

function TPowerControl.Execute : Boolean;

begin

  with (Owner as TForm) do

  case FAction of

  actLogOff: ExitWindowsEx(EWX_LOGOFF,1);

  actShutDown: ExitWindowsEx(EWX_SHUTDOWN,1);

  actReBoot: ExitWindowsEx(EWX_REBOOT,1);

  actForce: ExitWindowsEx(EWX_FORCE,1);

  actPowerOff: ExitWindowsEx(EWX_POWEROFF,1);

  actForceIfHung: ExitWindowsEx(EWX_FORCEIFHUNG,1);

  actMonitorOFF: SendMessage(Application.Handle,

  WM_SYSCOMMAND, SC_MONITORPOWER, 0);

  actMonitorON: SendMessage(Application.Handle, WM_SYSCOMMAND,

  SC_MONITORPOWER, -1);

  actCDEject: mciSendstring('SET CDAUDIO DOOR OPEN

  WAIT'
,nil,0, Handle);

  actCDUnEject: mciSendstring('SET CDAUDIO DOOR CLOSED

  WAIT'
,nil,0, Handle);

  end; {Case}

  Result := True;

end;

end.

Взято из http://forum.sources.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...