Видеокарта, Монитор
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; |
- Подробности
- Родительская категория: Работа с железом
- Категория: Видеокарта, Монитор
ChangeDisplaySettings
Автор cpu
- Подробности
- Родительская категория: Работа с железом
- Категория: Видеокарта, Монитор
Для этого необходимо создать обработчик для перехвата сообщения 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; |
- Подробности
- Родительская категория: Работа с железом
- Категория: Видеокарта, Монитор