Я столкнулся с решением при создании программы настройки сообщений об ошибках.Идея состоит в том, чтобы взять вторую пару значений из WMIC, известных как «PixelsPerXLogicalInch» и «PixelsPerYLogicalInch»
for /f %%A in ('wmic path Win32_DesktopMonitor get PixelsPerXLogicalInch^,PixelsPerYLogicalInch /value ^| find "="') do set "%%A"
echo %PixelsPerXLogicalInch% x %PixelsPerYLogicalInch%
. Это выведет коэффициент преобразования для преобразования пикселей в дюймы.Поскольку смещение составляет всего 1/1440 от дюйма, разделение этих значений на 1440 приведет к числу смещений на пиксель.
for /f %%A in ('wmic path Win32_DesktopMonitor get PixelsPerXLogicalInch^,PixelsPerYLogicalInch /value ^| find "="') do set "%%A"
set /a TwipsPerPixelX=1440/%PixelsPerXLogicalInch%
set /a TwipsPerPixelY=1440/%PixelsPerYLogicalInch%
echo %TwipsPerPixelX% x %TwipsPerPixelY%
Теперь просто примените эти коэффициенты преобразования к позиционным вычислениям с небольшимумножение.
@echo off
setlocal
for /f %%A in ('wmic path Win32_VideoController get CurrentHorizontalResolution^,CurrentVerticalResolution /value ^| find "="') do set "%%A"
for /f %%A in ('wmic path Win32_DesktopMonitor get PixelsPerXLogicalInch^,PixelsPerYLogicalInch /value ^| find "="') do set "%%A"
set /a TwipX=%CurrentHorizontalResolution%*(1440/%PixelsPerXLogicalInch%)
set /a TwipY=%CurrentVerticalResolution%*(1440/%PixelsPerYLogicalInch%)
echo %TwipX% x %TwipY%
Выходные значения из этого набора команд создадут InputBox сразу за нижним правым углом экрана (так как окна расположены в верхнем левом углу.)
Принимая всеПринимая это во внимание, вы можете создать скрипт, который порождает InputBox
в случайной позиции на экране.Это, или запросить у пользователя значение позиции, или даже использовать его в ваших собственных приложениях CMD / VBS для более точного позиционирования ваших блоков ввода.
<!-- :
@echo off
setlocal
for /f %%A in ('wmic path Win32_VideoController get CurrentHorizontalResolution^,CurrentVerticalResolution /value ^| find "="') do set "%%A"
for /f %%A in ('wmic path Win32_DesktopMonitor get PixelsPerXLogicalInch^,PixelsPerYLogicalInch /value ^| find "="') do set "%%A"
set /a RandX=(%Random%*%CurrentHorizontalResolution%/32768)*(1440/%PixelsPerXLogicalInch%)
set /a RandY=(%Random%*%CurrentVerticalResolution%/32768)*(1440/%PixelsPerYLogicalInch%)
start /b cscript //nologo "%~f0?.wsf" "%RandX%" "%RandY%"
exit /b
-->
<job><script language="VBScript">
InputBox "","Randomly-Positioned Input Box","",Wscript.Arguments(0),Wscript.Arguments(1)
</script></job>