Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
29th
Июн
Как перевернуть экран на 90 и 180 градусов?
Posted by obzor under Delphi
Как перевернуть второй экран? На 90 и 180 градусов. Основной я разобрался:
procedure ChangeOrientation(NewOrientation:DWORD);
var
dm : TDeviceMode;
dwTemp : DWORD;
dmDisplayOrientation : DWORD;
begin
ZeroMemory(@dm, sizeof(dm));
dm.dmSize := sizeof(dm);
if EnumDisplaySettings(nil, DWORD(ENUM_CURRENT_SETTINGS), dm) then
begin
Move(dm.dmScale,dmDisplayOrientation,SizeOf(dmDisplayOrientation));
// swap width and height
if Odd(dmDisplayOrientation)<>Odd(NewOrientation) then
begin
dwTemp := dm.dmPelsHeight;
dm.dmPelsHeight:= dm.dmPelsWidth;
dm.dmPelsWidth := dwTemp;
end;
if dmDisplayOrientation<>NewOrientation then
begin
Move(NewOrientation,dm.dmScale,SizeOf(NewOrientation));
if (ChangeDisplaySettings(dm, 0)<>DISP_CHANGE_SUCCESSFUL) then
RaiseLastOSError;
end;
end;
end;
Узнать количество подключенных мониторов
GetSystemMetrics( SM_CMONITORS );
Это на включение второго монитора, но может как-то поможет.
ChangeDisplaySettingsEx( PChar( @Display.DeviceName[0] ), DevMode,
0, CDS_UPDATEREGISTRY or CDS_NORESET, nil );
ChangeDisplaySettingsEx( nil, PDevMode( nil )^, 0, 0, nil );
нашел продолжение, но как перевернуть второй экран ни слова ни намека
const
EDD_GET_DEVICE_INTERFACE_NAME = 1;
ENUM_REGISTRY_SETTINGS = DWORD(-2);
procedure TForm1.Button1Click(Sender: TObject);
var
Display: TDisplayDevice;
DevMode: TDevMode;
begin
// выключить второй монитор
Display.cb := SizeOf(TDisplayDevice);
EnumDisplayDevices(nil, 1 {второй монитор, для первого ноль},
Display, EDD_GET_DEVICE_INTERFACE_NAME);
ZeroMemory(@DevMode, SizeOf(TDevMode));
DevMode.dmSize := SizeOf(TDevMode);
DevMode.dmBitsPerPel := 32;
DevMode.dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or
DM_DISPLAYFREQUENCY or DM_DISPLAYFLAGS or DM_POSITION;
ChangeDisplaySettingsEx(PChar(@Display.DeviceName[0]),
DevMode, 0, CDS_UPDATEREGISTRY or CDS_NORESET, nil);
ChangeDisplaySettingsEx(nil, PDevMode(nil)^, 0, 0, nil);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Display: TDisplayDevice;
DevMode: TDevMode;
begin
// включить второй монитор
Display.cb := SizeOf(TDisplayDevice);
EnumDisplayDevices(nil, 1 {второй монитор, для первого ноль},
Display, EDD_GET_DEVICE_INTERFACE_NAME);
EnumDisplaySettings(PChar(@Display.DeviceName[0]),
ENUM_REGISTRY_SETTINGS, DevMode);
DevMode.dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or
DM_DISPLAYFREQUENCY or DM_DISPLAYFLAGS or DM_POSITION;
ChangeDisplaySettingsEx(PChar(@Display.DeviceName[0]),
DevMode, 0, CDS_UPDATEREGISTRY or CDS_NORESET, nil);
ChangeDisplaySettingsEx(nil, PDevMode(nil)^, 0, 0, nil);
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)