Начало » Программирование » Delphi » Поведение GetScaleFactorForMonitor- DEVICE_SCALE_FACTOR - Win10 
	
		
		
			| Поведение GetScaleFactorForMonitor- DEVICE_SCALE_FACTOR - Win10 [сообщение #5979] | 
			Fri, 14 March 2025 15:43   | 
		 
		
			
				
				
				
					
						  
						Keks
						 Сообщений: 7 Зарегистрирован: April 2024 
						
					 | 
					Junior Member  | 
					 | 
		 
		 
	 | 
 
	
		Надо была подсчитать мне 
PixelsPerInch 
и размеры монитора 
GetSystemMetrics(SM_CXSCREEN); 
GetSystemMetrics(SM_CYSCREEN); 
 
Начал с D7 c параметров экрана 125% 
получил результаты 
 
SM_CXSCREEN   1536 
SM_CYSCREEN   864 
Screen.PixelsPerInch    96 
 
Нашел код на Lazarus под Win10 
DEVICE_SCALE_FACTOR   125 
SM_CXSCREEN   1536 
SM_CYSCREEN   864  
 
адаптировал D7 под Win10 
 
DEVICE_SCALE_FACTOR   100 
SM_CXSCREEN   1536 
SM_CYSCREEN   864 
Screen.PixelsPerInch    96 
 
Закомпилировал под D12.1 
DEVICE_SCALE_FACTOR   125 
SM_CXSCREEN   1920 
SM_CYSCREEN   1080 
Screen.PixelsPerInch    96 
 
Один код для вызова функций MS 
три разных результата D7, D12, Lazarus 
Кусок кода прилагаю
var
  DEVICE_SCALE_FACTOR: UINT;
...    
  GetScaleFactorForMonitor: function(monitor: HMONITOR;
    var DEVICE_SCALE_FACTOR: UINT): HRESULT; stdcall;
...
  hShcore := GetModuleHandle('Shcore');
  GetScaleFactorForMonitor := GetProcAddress(hShcore, 'GetScaleFactorForMonitor');
  ErrCode := GetScaleFactorForMonitor(Monitor.Handle, DEVICE_SCALE_FACTOR);
  Memo1.Clear;
  Memo1.Lines.Add('DEVICE_SCALE_FACTOR   ' + IntToStr(DEVICE_SCALE_FACTOR));
 
Я понимаю разные среды программирования но это вызов системных функций, что не так? 
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |   
Переход к форуму:
 
 Текущее время: Tue Nov 04 10:20:26 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.00705 секунд 
 |