在Windows / C中强制显示分辨率
我有一个开关视图设置为在两台机器之间切换一台显示器,它似乎从显示器中剥离了一些信息.显示器的原始分辨率为1920×1080 @ 60hz,但
Windows拒绝让我将其设置为高于25hz隔行扫描的任何东西,这看起来非常糟糕.我已经尝试了广泛的谷歌搜索建议的所有驱动程序和设置,但仍然没有.
作为一个快速项目,我试图看看是否可以使用ChangeDisplaySettingsEx winapi函数强制监视器到特定的显示设置,但看起来Windows仍在检查以确保模式处于不正确的支持模式集并返回DISP_CHANGE_BADMODE. 这是完整的功能: WCHAR deviceName[64]; DISPLAY_DEVICE dd; dd.cb = sizeof(DISPLAY_DEVICE); int index=0; while (EnumDisplayDevices(NULL,index++,&dd,0)) { // first monitor is the problem one if (index == 1) { lstrcpy(deviceName,dd.DeviceName); } } DEVMODE dmScreenSettings; ZeroMemory(&dmScreenSettings,sizeof(DEVMODE)); dmScreenSettings.dmSize = sizeof(DEVMODE); dmScreenSettings.dmPelsWidth = 1920; dmScreenSettings.dmPelsHeight = 1080; dmScreenSettings.dmBitsPerPel = 32; dmScreenSettings.dmDisplayFrequency = 60; dmScreenSettings.dmFields = DM_DISPLAYFREQUENCY | DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; LONG res = ChangeDisplaySettingsExW((LPCWSTR) &deviceName,&dmScreenSettings,NULL,CDS_RESET,NULL); if (res != DISP_CHANGE_SUCCESSFUL) { if (res == DISP_CHANGE_BADMODE) MessageBoxA(NULL,"Bad mode","Failed",MB_ICONHAND); else if (res == DISP_CHANGE_BADPARAM) MessageBoxA(NULL,"Bad Param",MB_ICONHAND); else MessageBoxA(NULL,"Other error",MB_ICONHAND); } 我已经看过How can I force any display resolution/timing I want?了,如果可能的话,我宁愿不去使用ATI SDK(我有一台ATI Radeon).有什么建议?我认为用软件解决这个问题会非常简洁. 解决方法
因此,在SuperUser上进行搜索时,我指出了正确的方向(感谢Josh). switchview没有正确传递EDID数据,Windows Vista / 7在所有情况下都坚持使用EDID数据.有一些关于删除两个EDID引脚的信息,但我不想走这条路.
做一些谷歌搜索引导我到http://msdn.microsoft.com/en-us/windows/hardware/gg487330.aspx有一个白皮书覆盖你的EDID.这反过来导致我在这里找到一个论坛帖子:http://www.sevenforums.com/tutorials/7947-force-dvi-hdmi-resolutions-refresh-rates.html.有人足以创建一个工具来轻松生成EDID覆盖.dat文件. 从那时起,我做了以下事情: >使用phoenix.exe工具为我的主监视器生成.dat(工作正常)>在moninfo.exe中加载数据以创建.inf驱动程序文件>使用“Have disk”指定我的新.inf文件>肆无忌惮地忽略了司机未签约的大红色警告(通常不是一件好事)>重新启动并将分辨率切换为正确的分辨率 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 身份验证 – 向Microsoft.Owin.Testing.TestServer验证请求
- windows-server-2008-r2 – 在Windows系统上使用身份验证的
- windows – SCCM客户端中的每个操作实际上做了什么?
- windows-phone-7 – ApplicationBar背后的背景图片
- windows-server-2008 – 如果计算机与ADUC中的另一个计算机
- PHP7安装Redis扩展教程【Linux与Windows平台】
- office365 – 使用Microsoft OneDrive API / SDK的客户端分
- windows-server-2008 – IIS7.5管理器中“虚拟字节”在“工
- 在Windows上编译C#.net 3.5控制台应用程序有什么免费,小巧,
- windows-server-2008-r2 – 我可以将Windows 8客户端与Wind