Code:

procedure TForm1.Button3Click(Sender: TObject);

begin

MessageDlg('Уже поздно. Будь послушным мальчиком. '+

'Туши свет и вали спать!', mtInformatoion, [mbOk], 0);

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);

end;

  

Для того, чтобы программно включить монитор можете использовать следующий код:

 

procedure TForm1.Button3Click(Sender: TObject);

begin

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

end;

 

 

Code:

procedure TForm1.button1click(Sender: TObject);

var

lpDisplayDevice: TDisplayDevice;

dwFlags: DWORD;

cc: DWORD;

begin

form2.memo1.Clear;

lpDisplayDevice.cb := sizeof(lpDisplayDevice);

dwFlags := 0;

cc:= 0;

while EnumDisplayDevices(nil, cc, lpDisplayDevice , dwFlags) do

begin

   Inc(cc);

   form2.memo1.lines.add(lpDisplayDevice.DeviceString);

       {Так же мы увидим дополнительную информацию в lpDisplayDevice}

   form2.show;

end;

end;

 

 

Для этого необходимо создать обработчик для перехвата сообщения WM_DISPLAYCHANGE. Применяется это в тех случаях, если Ваше приложение зависит от разрешения экрана (например, приложение работает с графикой).

 Далее следует пример обработчика сообщения:

Иногда требуется, чтобы программа работала при чётко заданных параметрах монитора: разрешение, глубина цвета, частота обновления… Определить текущее разрешение просто, достаточно обратиться к объекту TScreen и посмотреть значения его полей Width и Height. А вот чтобы установить свои значения требуется обратиться к функции Api: ChangeDisplaySettings. Если мы хотим вернуть текущие настройки по завершении работы программы, то перед вызовом изменений надо запомнить эти настройки например таким образом:

 

Если монитор поддерживает режим Stand by, то его можно программно перевести в этот режим. Данная возможность доступна на Windows95 и выше.

 Чтобы перевести монитор в режим Stand by:

 

  Display Device Modes

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

 

 

Code:

function GetNumColors: LongInt;

var

BPP: Integer;

DC: HDC;

begin

DC := CreateDC('DISPLAY', nil, nil, nil);

if DC <> 0 then

   begin

     try

       BPP := GetDeviceCaps(DC, BITPIXEL) * GetDeviceCaps(DC, PLANES);

     finally

       DeleteDC(DC);

     end;

     case BPP of

       1: Result := 2;

       4: Result := 16;

       8: Result := 256;

       15: Result := 32768;

       16: Result := 65536;

       24: Result := 16777216;

     end;

   end

else

   Result := 0;

end;

 

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

var

DC: THandle;      // display context

Bits: integer;    // bits per pixel

HRes: integer;    // horizontal resolution

VRes: integer;    // vertical resolution

DM: TDevMode;     // to Save EnumDisplaySettings

ModeNum: longint; // video mode number

Ok: Bool;

fre: integer;     // refresh rate

begin

DC   := GetDC(Handle);

Bits := GetDeviceCaps(DC, BITSPIXEL);

HRes := GetDeviceCaps(DC, HORZRES);

VRes := GetDeviceCaps(DC, VERTRES);

fre  := GetDeviceCaps(DC, VREFRESH);

// Show Current Resolution

Edit1.Text := Format('%d bit, %d x %d', [Bits, HRes, VRes]);

ReleaseDC(Handle, DC); // Show all modes available ModeNum := 0;  // The 1st one

EnumDisplaySettings(nil, ModeNum, DM);

ListBox1.Items.Add(Format('%d bit, %d x %d bei %d Hz', [DM.dmBitsPerPel,

   DM.dmPelsWidth, DM.dmPelsHeight, Dm.dmDisplayFrequency]));

Ok := True;

while Ok do

begin

   Inc(ModeNum); // Get next one

   Ok := EnumDisplaySettings(nil, ModeNum, DM);

   ListBox1.Items.Add(Format('%d bit, %d x %d bei %d Hz', [DM.dmBitsPerPel,

     DM.dmPelsWidth, DM.dmPelsHeight, Dm.dmDisplayFrequency]));

end;

end;

 

 

Code:

function GetDisplayFrequency: Integer;

{©Drkb v.3}

 

var

DeviceMode: TDeviceMode;

 

begin

EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);

Result := DeviceMode.dmDisplayFrequency;

end;