C++ 注册表获取系统分辨率
时间: 2023-08-28 15:03:28 浏览: 170
可以通过以下代码获取系统分辨率:
```cpp
#include <Windows.h>
int main()
{
int screenWidth, screenHeight;
// 获取屏幕分辨率
screenWidth = GetSystemMetrics(SM_CXSCREEN);
screenHeight = GetSystemMetrics(SM_CYSCREEN);
// 输出屏幕分辨率
printf("Screen Resolution: %d x %d\n", screenWidth, screenHeight);
return 0;
}
```
其中,`GetSystemMetrics` 函数可以获取系统的各种信息,`SM_CXSCREEN` 和 `SM_CYSCREEN` 分别表示屏幕的宽度和高度。
相关问题
注册表获取Windows系统分辨率
可以通过访问注册表获取Windows系统分辨率。具体可以通过以下步骤实现:
1. 打开注册表编辑器(regedit)。
2. 找到以下路径:HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO\{GUID}\0000
其中,{GUID} 是一个唯一标识符,可以在以下路径下找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY
在这个路径下可以找到多个GUID,每个GUID对应一个显示设备,需要找到正确的GUID。
3. 在0000路径下,找到以下键值:
- `DefaultSettings.XResolution`: 屏幕水平分辨率
- `DefaultSettings.YResolution`: 屏幕垂直分辨率
这两个键值保存了系统的分辨率信息。
4. 读取键值并输出分辨率信息。
以下是使用C++读取注册表并输出分辨率信息的代码示例:
```cpp
#include <Windows.h>
#include <iostream>
#include <string>
int main()
{
HKEY hKey;
std::string subKey = "SYSTEM\\CurrentControlSet\\Control\\VIDEO\\{GUID}\\0000";
std::string xResName = "DefaultSettings.XResolution";
std::string yResName = "DefaultSettings.YResolution";
DWORD xRes, yRes;
// 替换{GUID}为正确的GUID
subKey.replace(subKey.find("{GUID}"), 6, "{正确的GUID}");
// 打开注册表键
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subKey.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
{
// 读取XResolution键值
DWORD xResType, xResSize;
if (RegQueryValueEx(hKey, xResName.c_str(), NULL, &xResType, NULL, &xResSize) == ERROR_SUCCESS)
{
if (xResType == REG_DWORD && xResSize == sizeof(DWORD))
{
RegQueryValueEx(hKey, xResName.c_str(), NULL, NULL, (LPBYTE)&xRes, &xResSize);
}
}
// 读取YResolution键值
DWORD yResType, yResSize;
if (RegQueryValueEx(hKey, yResName.c_str(), NULL, &yResType, NULL, &yResSize) == ERROR_SUCCESS)
{
if (yResType == REG_DWORD && yResSize == sizeof(DWORD))
{
RegQueryValueEx(hKey, yResName.c_str(), NULL, NULL, (LPBYTE)&yRes, &yResSize);
}
}
// 关闭注册表键
RegCloseKey(hKey);
}
// 输出分辨率信息
std::cout << "Screen Resolution: " << xRes << " x " << yRes << std::endl;
return 0;
}
```
需要注意的是,这种方法需要管理员权限才能访问注册表,否则会返回错误。
阅读全文