gpt4 book ai didi

windows - WcsGetDefaultColorProfile 的代码示例

转载 作者:可可西里 更新时间:2023-11-01 13:29:49 25 4
gpt4 key购买 nike

有没有人有一个工作代码示例显示调用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com