0

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

有什么方法可以隔离我们的应用程序,一旦运行不受这种影响?

4

1 回答 1

0

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

当 Windows 7 中的字体设置为大于 100% 时,我在设置为在 Windows 照片查看器中打开 jpg 时遇到了同样的问题。在我的测试中,这只会影响调用应用程序。从 Windows 资源管理器或开始 | 打开相同的 jpg 文件时,应用程序不受影响。跑。

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

于 2016-02-03T17:54:36.797 回答