- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有没有人有一个工作代码示例显示调用 Windows 颜色系统函数 WcsGetDefaultColorProfile 以获取特定设备的默认颜色配置文件?当我为 pDeviceName 参数传递 null 时,它对我有用,但是当我尝试传递监视器的设备名称时,我总是得到错误代码 ERROR_FILE_NOT_FOUND。
我更喜欢 C# 示例,但我会使用我能得到的任何东西。我在任何地方都找不到更新的 WCS 配置文件管理功能的任何示例代码。
最佳答案
我遇到了同样的问题,让您感到沮丧的原因是 MSDN 文档关于 WcsGetDefaultColorProfile 的 pDeviceName 参数不正确(或者充其量是误导性的)。
MSDN 文档 ( http://msdn.microsoft.com/en-us/library/dd372247(v=vs.85).aspx ) 表明 pDeviceName 指的是“设备名称”,对于显示设备,人们会假设它是一个 Windows 显示设备名称,例如“\.\DISPLAY1”,如在来自 EnumDisplayDevices 的 DISPLAY_DEVICE 结构的 DeviceName 参数。
其实这里需要的是monitor的DeviceKey参数,具体是EnumDisplayDevices中使用EDD_GET_DEVICE_INTERFACE_NAME标志时得到的DeviceKey。
所以工作代码看起来像这样,假设 szDisplayDeviceName 已经设置为显示您关心的设备名称,例如“\.\DISPLAY1”:
WCHAR szPath[MAX_PATH];
DISPLAY_DEVICE dd;
dd.cb = sizeof(dd);
if (EnumDisplayDevices(szDisplayDeviceName, 0, &dd, EDD_GET_DEVICE_INTERFACE_NAME))
{
if (WcsGetDefaultColorProfile(WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER,
dd.DeviceKey,
CPT_ICC,
CPST_PERCEPTUAL,
1, // dwProfileID -- doesn't seem to matter what value you use here
MAX_PATH * sizeof(WCHAR),
szPath))
{
PROFILE profile;
profile.cbDataSize = (DWORD)(wcslen(szPath) + 1) * sizeof(WCHAR);
profile.dwType = PROFILE_FILENAME;
profile.pProfileData = (PVOID)szPath;
HPROFILE hProfile = OpenColorProfile(&profile,
PROFILE_READ, FILE_SHARE_READ, OPEN_EXISTING);
// now do something with the profile
}
}
关于windows - WcsGetDefaultColorProfile 的代码示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533754/
有没有人有一个工作代码示例显示调用 Windows 颜色系统函数 WcsGetDefaultColorProfile 以获取特定设备的默认颜色配置文件?当我为 pDeviceName 参数传递 nul
我是一名优秀的程序员,十分优秀!