Как получить разрешение экрана (высота, ширина) в пикселях?
Как получить разрешение экрана в R
Ответ 1
Вы можете использовать интерфейс commad-line для WMI
> system("wmic desktopmonitor get screenheight")
ScreenHeight
900
Вы можете записать результат с помощью system
(scr_width <- system("wmic desktopmonitor get screenwidth", intern=TRUE))
# [1] "ScreenWidth \r" "1440 \r" "\r"
(scr_height <- system("wmic desktopmonitor get screenheight", intern=TRUE))
# [1] "ScreenHeight \r" "900 \r" "\r"
С несколькими экранами выход, например,
[1] "ScreenWidth \r" "1600 \r" "1600 \r" ""
Мы хотим все, кроме первого и последнего значений, преобразованные в числа
as.numeric(c(
scr_width[-c(1, length(scr_width))],
scr_height[-c(1, length(scr_height))]
))
# [1] 1440 900
Ответ 2
Легко с JavaScript: вы просто делаете
window.screen.height
window.screen.width
Вы можете вызвать JavaScript из R, используя SpiderMonkey пакет из OmegaHat.
Вы также можете решить эту проблему с помощью Java и использовать rJava для доступа к ней.
library(rJava)
.jinit()
toolkit <- J("java.awt.Toolkit")
default_toolkit <- .jrcall(toolkit, "getDefaultToolkit")
dim <- .jrcall(default_toolkit, "getScreenSize")
height <- .jcall(dim, "D", "getHeight")
width <- .jcall(dim, "D", "getWidth")
Ответ 3
Принятый ответ не работает в Windows 8 и более поздних версиях.
Используйте это:
system("wmic path Win32_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value")
Чтобы получить разрешение экрана в векторе, вы можете реализовать его как:
suppressWarnings(
current_resolution <- system("wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution /format:value", intern = TRUE) %>%
strsplit("=") %>%
unlist() %>%
as.double()
)
current_resolution <- current_resolution[!is.na(current_resolution)]
Теперь у вас будет вектор с длиной 2:
> current_resolution
[1] 1920 1080
Ответ 4
В Windows вы можете вызвать GetSystemMetrics
, передав SM_CXSCREEN
и SM_CYSCREEN
. Это возвращает ширину/высоту экрана основного монитора в пикселях.
DWORD dwWidth = GetSystemMetrics(SM_CXSCREEN);
DWORD dwHeight = GetSystemMetrics(SM_CYSCREEN);