WinForms 应用生成 Windows 照片查看器影响原始应用中的字体

WinForms app spawning Windows Photo Viewer affect fonts in original app

我们在 Windows 7 上有一个 WinForms 桌面应用程序 运行,桌面字体大小设置为 150%。我们使用 Process.Start() 启动查看器来显示存储在我们数据库中的文档。查看照片时,将启动 Windows 照片查看器。发生这种情况时,应用程序中的许多字体都会更改。菜单字体尤其受到影响。我假设这与 WinForms 库中的高 DPI 处理有关。但是,令我惊讶的是,启动 Windows 照片查看器会导致影响应用程序的桌面发生变化。 125% 或 175% 的设置没有此效果。

有没有什么方法可以使我们的应用程序在 运行 受到这种影响后免受影响?

像您一样,我们的应用程序将文件存储在我们的数据库中。当用户需要查看文件时,程序从数据库中检索文件并将其保存到本地驱动器。保存后,它会使用 ShellExecute 调用打开文件。

当字体在 Windows 中设置为大于 100% 时,我遇到了同样的问题,jpgs 设置为在 Windows 照片查看器中打开 7。在我的测试中,这只会影响调用应用程序。从 Windows Explorer 或 Start | 打开相同的 jpg 时应用程序不受影响运行.

基于此,在花了很多时间寻找解决方案后,我终于决定使用 "hack" 来解决这个问题。我创建了一个单独的 EXE,它只打开作为参数传入的文件。然后,我将主应用程序从打开 JPG 更改为以 jpg 文件位置作为参数启动这个新的 EXE。现在新的 EXE 是 "original app" 而不是我的主应用程序,所以我的主应用程序不受影响。