我有一个托管winforms控件的WPF应用程序。当我在Windows 8.1中运行该应用程序时。 Ui很混乱。作为解决方法,我正在改变系统DPi和分辨率设置。我想要的是将应用程序的dpiaware设为false。根据我的研究,我知道我可以使用清单或使用shcore.dll(win8.1)中的api setdpiawareness。清单更适合我。我查了Disable DPI awareness for WPF application。
我的查询更多关于清单, 我正在编写一个示例应用程序,使dpiaware为false。我已经嵌入了清单,下面是它的样子。
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>false</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
我正在尝试运行下面的每次Dpiaware的值为true。我在清单中做错了什么?还是其他选择?
[DllImport("user32.dll", SetLastError = true)]
static extern bool IsProcessDPIAware();
protected override void OnStartup(StartupEventArgs e)
{
Process_DPI_Awareness p;
p = 0;
base.OnStartup(e);
bool h = IsProcessDPIAware();
if(h)
MessageBox.Show("Dpi is 1");
else
MessageBox.Show("Dpi is not true");
}
答案 0 :(得分:0)
像Passant一样提到DisableDpiAwareness非常有效!