通过JavaScript的screen对象属性可获取,如screen.width(宽度)和screen.height(高度),或使用window.screen.availWidth/Height获取可用区域尺寸
如何通过API获取桌面大小
不同操作系统的API实现
Windows系统
方法1:使用Win32 API
| 函数名 | 说明 | 返回值类型 |
|---|---|---|
GetSystemMetrics | 获取系统指标(需包含windows.h) | 整型数值(像素) |
参数:SM_CXSCREEN(宽度) | ||
参数:SM_CYSCREEN(高度) |
示例代码(C++):

#include <windows.h> int width = GetSystemMetrics(SM_CXSCREEN); int height = GetSystemMetrics(SM_CYSCREEN);
方法2:使用Python的pygetwindow库
from pygetwindow import get_active_window screen = get_active_window.size # 返回 (width, height) 元组
macOS系统
方法:使用Quartz框架
import AppKit let screen = NSScreen.main let size = screen.frame.size // CGSize结构体,包含width和height
Linux系统
方法1:读取/sys/class/graphics/fb0/virtual_size
cat /sys/class/graphics/fb0/virtual_size # 输出格式:宽度x高度
方法2:使用Xlib库(C语言)
#include <X11/Xlib.h> Display *display = XOpenDisplay(NULL); Screen *screen = DefaultScreenOfDisplay(display); int width = DisplayWidth(display, screen->root); int height = DisplayHeight(display, screen->root);
跨平台解决方案
| 工具/框架 | 调用方式 |
|---|---|
| PyQt5 | QApplication.desktop().screenGeometry() |
| Electron | screen.getPrimaryDisplay().workAreaSize |
| Java (AWT) | Toolkit.getDefaultToolkit().getScreenSize() |
| Flutter | MediaQuery.of(context).size(需在Widget树中调用) |
注意事项
- 多显示器环境:需指定目标显示器(如Windows的
EnumDisplayMonitors) - DPI缩放:高分辨率设备需考虑缩放比例(如Windows的
GetDeviceCaps(LOGPIXELSX)) - 权限问题:部分Linux方法需要root权限
- 动态变化:监听分辨率变化需注册系统事件(如Windows的
WM_DISPLAYCHANGE)
相关问题与解答
Q1:如何判断当前显示器是否为主显示器?
A:
- Windows:使用
EnumDisplayDevices遍历设备,检查miDeviceInfo.rbVendorId是否为DMDO_PRIMARY_DEVICE - macOS:
NSScreen.screens数组第一个元素为主屏幕 - Linux/X11:
Xinerama扩展中XineramaScreenInfo.screens[0]为主屏幕
Q2:如何获取任务栏/Dock的高度?
A:

- Windows:
GetSystemMetrics(SM_CYCAPTION)栏高度,需结合窗口放置规则计算 - macOS:
NSApplication.shared.windows中全屏窗口的NSRect边界推算 - 通用方案:创建全屏透明窗口,通过API获取其实际
以上内容就是解答有关“api 获取桌面大小”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复