Tag: windows xp

窗体在Windows 8上显示错误的大小 – 如何获得实际大小?

在Windows 8上将表单边框样式设置为Sizable的WinForms表单, DesktopBounds属性DesktopBounds正确的值: 相反,当具有FixedDialog的表单边框样式时,值是错误的: 在Windows XP上,值始终是正确的: 我的问题是: 如何获得一个窗口的实际大小,包括完整的非客户区域? 更新1: 似乎它与这个SO问题有关 。 我会试着看看这是否能在这里解决我的问题。 更新2: 为了完整起见,以下是VMware Windows 7的结果: 更新3: 最后找到了一个解决方案,它涉及将DwmGetWindowAttribute函数与DWMWA_EXTENDED_FRAME_BOUNDS值一起使用。 我将在下面发布一个答案。

运行已安装的应用程序时,Environment.CurrentDirectory会产生意外结果

背景: 我为我的应用程序构建了一个安装程序,所有我的dll和内容文件都被正确地复制到C:\Program Files\MyCompany\MyApp目录。 当我从Visual Studio运行我的应用程序时,一切都很好。 但是,当我运行我的应用程序的安装版本时,我收到DirectoryNotFoundException 。 问题似乎与Environment.CurrentDirectory 。 我期待Environment.CurrentDirectory是…… “C:\\Program Files\\MyCompany\\MyApp” ……但实际上…… “C:\\Documents and Settings\\DanThMan” 这里发生了什么? 我该如何解决这个问题? 谢谢。 编辑: 好的,嗯。 如果我运行开始菜单快捷方式,则只会出现此问题。 如果我直接运行MyApp.exe,一切都很好。 编辑2: 我想我现在已经深究了这一点。 在我的安装程序(Visual Studio SetupProject)中,“开始”菜单快捷方式有一个名为WorkingFolder的属性,该属性“指定将安装快捷方式的目标应用程序的文件夹”。 我不小心将WorkingFolder设置为“MyCompany”。 它应该是“应用程序文件夹”。 现在我已正确设置它, Environment.CurrentDirectory再次按预期工作。 感谢你的帮助。 编辑3: 但是,阅读下面的警告,我决定使用以下内容作为Environment.CurrentDirectory的替代: System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);