windows - Hvordan kan jeg få skærmopløsningen i R

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan jeg få skærmopløsning (højde, bredde) i pixels?

Bedste reference


Du kan bruge kommad-line interface til WMI [15]


> system("wmic desktopmonitor get screenheight")
ScreenHeight  
900   


Du kan fange resultatet med system


(scr\_width <- system("wmic desktopmonitor get screenwidth", intern=TRUE))
# [1] "ScreenWidth  
" "1440         
" "
"
(scr\_height <- system("wmic desktopmonitor get screenheight", intern=TRUE))
# [1] "ScreenHeight  
" "900           
" "
" 


Med flere skærmbilleder er udgangen f.eks.


[1] "ScreenWidth  
" "1600         
" "1600         
" ""


Vi ønsker alle, men de første og sidste værdier, konverteret til tal


as.numeric(c(
  scr\_width[-c(1, length(scr\_width))], 
  scr\_height[-c(1, length(scr\_height))]
))
# [1] 1440  900

Andre referencer 1


Det er nemt med JavaScript: Det gør du bare


window.screen.height
window.screen.width


Du kan ringe JavaScript fra R ved hjælp af SpiderMonkey-pakken fra OmegaHat. [16] [17]





Du kan også løse dette med Java, og bruge rJava-pakken for at få adgang til det. [19]


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")

Andre referencer 2


Accepteret svar virker ikke på Windows 8 og senere.


Brug denne:


system("wmic path Win32\_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value")


For at få dig skærmopløsning i en vektor, kan du implementere den som:


  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)]


Nu har du en vektor med længde 2:


> current\_resolution
[1] 1920 1080

Andre referencer 3


På Windows kan du ringe GetSystemMetrics forbi SM\_CXSCREEN og SM\_CYSCREEN. Dette returnerer bredden/højden af ​​skærmen på den primære skærm, i pixels. [20]


DWORD dwWidth = GetSystemMetrics(SM\_CXSCREEN);
DWORD dwHeight = GetSystemMetrics(SM\_CYSCREEN);