home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: SysTools / SysTools.zip / apmswtch.zip / ApmSwitch.Pas < prev   
Pascal/Delphi Source File  |  2001-09-16  |  2KB  |  69 lines

  1. // Virtual Pascal, tam@gmx.de 16.09.2001
  2. uses Os2Base,SysUtils;
  3.  
  4. var State : Boolean;
  5.     DevHandle : LongInt;
  6.  
  7. Procedure OpenAPM;
  8. var rc,ulAction : LongInt;
  9. begin
  10.   rc := DosOpen('APM$',DevHandle,ulAction,0,FILE_NORMAL,FILE_OPEN,
  11.                  OPEN_ACCESS_READWRITE or OPEN_SHARE_DENYNONE,NIL);
  12.   if rc <> NO_ERROR then begin
  13.     WriteLn('DosOpen() APM$: ',SysErrorMessage(rc));
  14.     if rc = 110 then
  15.       WriteLn('APM.SYS must be installed.');
  16.     Halt;
  17.   end;
  18. end;
  19.  
  20. Procedure CloseAPM;
  21. var rc : LongInt;
  22. begin
  23.   rc := DosClose(DevHandle);
  24.   if rc <> NO_ERROR then begin
  25.     WriteLn('DosClose() APM$: ',SysErrorMessage(rc));
  26.     Halt;
  27.   end;
  28. end;
  29.  
  30. Procedure SetAPM;
  31. var PLen,DLen,rc : LongInt;
  32.     Params : Array[1..2] of LongInt;
  33.     Data : Word;
  34. begin
  35.   if State then
  36.     Params[1] := 3  // enable APM
  37.   else
  38.     Params[1] := 4; // disable APM
  39.   Params[2] := 0;
  40.   OpenAPM;
  41.   PLen := SizeOf(Params);
  42.   DLen := SizeOf(Data);
  43.   rc := DosDevIOCtl(DevHandle, IOCTL_POWER,POWER_SENDPOWEREVENT,
  44.                     @Params, PLen, @PLen,@Data, DLen, @DLen);
  45.   if rc <> NO_ERROR then begin
  46.     WriteLn('DosDevIOCtl(): ',SysErrorMessage(rc));
  47.     Halt;
  48.   end;
  49.   WriteLn('APM enabled: ',state);
  50.   CloseAPM;
  51. end;
  52.  
  53. Procedure GetParameter;
  54. begin
  55.   WriteLn('ApmSwitch, 16.09.2001, tam@gmx.de');
  56.   if ParamCount <> 1 then begin
  57.     WriteLn('usage: ApmSwitch 1 -> turn APM on');
  58.     WriteLn('       ApmSwitch 0 (or any other value) -> turn APM off');
  59.     Halt;
  60.   end;
  61.   State := ParamStr(1) = '1';
  62. end;
  63.  
  64. begin
  65.   GetParameter;
  66.   SetAPM;
  67. end.
  68.  
  69.