小编len*_*ant的帖子

获取屏幕比例

我们可以获得分辨率和屏幕的东西Screen。所以,如果我们想在屏幕中央放置一些东西,我们应该使用Screen.WorkingArea.Widthand Screen.WorkingArea.Height

但是,在 Windows 8.1(不确定其他操作系统)中,如果项目看起来太小,则可以在屏幕上缩放项目。您可以通过调用桌面上的上下文菜单来检查它,选择“屏幕分辨率”,然后选择“放大或缩小文本和其他项目”。

问题是,它似乎确实提高了屏幕分辨率!所以,Screen.WorkingArea.WidthScreen.WorkingArea.Height给你换算值,并指向Screen.WorkingArea.Width/2 Screen.WorkingArea.Height/2将在实际屏幕的中心不再是(200%缩放这点将在屏幕的右下角)。这可能会破坏 UI 项目的大量放置。

那么,是否有可能获得缩放的价值?我找不到任何包含此信息的类。

c# screen-resolution

5
推荐指数
1
解决办法
8276
查看次数

单元测试中的“模拟”命令行参数

我有一些功能,这取决于命令行参数,不同的参数应该导致不同的结果。

我不能直接“模拟”这个参数,因为有某种链依赖关系 - 我需要对一些 xaml 控件进行单元测试,它依赖于视图模型,它依赖于某些附加类,它使用获取命令行参数Environment.GetCommandLineArgs,我不能直接影响最后一个类来手动设置参数而不是使用GetCommandLineArgs.

所以,我想知道Environment.GetCommandLineArgs,对于某些单元测试,有没有办法让我希望它返回返回值。

c# unit-testing

5
推荐指数
1
解决办法
4981
查看次数

尝试创建非自签名证书的异常

我想从每个设备的自签名证书切换到一对证书,其中一个是以前生成的,放置在受信任的根证书颁发机构存储中,对所有设备都相同,并作为第二个证书的根 CA 工作,该证书是按设备,并放置在个人存储中。

我不想使用 makecert,因为创建签名证书会显示 UI,这是我想避免的。此外,由于某些与许可证相关的内容(尽管我有可用的解决方案),因此无法使用 OpenSSL。所以,现在我正在使用基于 CertEnroll 库的小型 C# 工具。

这就是我为第一个根 CA 证书创建 pfx 的方式。

makecert -n "CN=Root CA" -cy authority -r -a sha256 -len 2048 -sv root.pvk root.cer
pvk2pfx -pvk root.pvk -spc root.cer -pfx root.pfx -pi 123 -po 123
Run Code Online (Sandbox Code Playgroud)

要从 C# 代码创建证书,我参考了问题如何以编程方式为 WCF 服务创建自签名证书?C# 使用 certenroll.dll 生成一个没有 CA 的非自签名客户端 CX509Certificate 请求

到目前为止,我有以下代码。证书生成方法:

/// <summary>
/// Generates self-signed certificate with specified subject, which will expire after specified timespan.
/// </summary>
public X509Certificate2 CreateCertificate(string subjectName, TimeSpan …
Run Code Online (Sandbox Code Playgroud)

c# ssl x509certificate2 certenroll

5
推荐指数
1
解决办法
2435
查看次数

卸载顺序

我可以找到某个实际的订单,在卸载期间执行哪些事件和部分?例如,是否UninstallDelete会比usPostUninstall卸载步骤更早出现?

Inno Setup在手册中有"安装顺序"一文,但它看起来更像是编译顺序,而不是执行.

inno-setup pascalscript

4
推荐指数
1
解决办法
2206
查看次数

GetLastInputTime显示不可能的时间?

为了确定,如果PC没有使用一段时间,我正在使用 Win32API.GetLastInputTime()方法.我只是从DateTime.Now中减去它的值,并将它与存储在设置中的某个值进行比较.

它以前工作得很好,但最近GetLastInputTime开始显示完全荒谬的结果 - 它显示了我未来的时间.今天它向我展示了2016年7月2日.

那么,有没有人有任何想法,发生了什么?如何GetLastInputTime获得时间,以及如何可能,这一次是未来的?

c# winapi

3
推荐指数
1
解决办法
226
查看次数

找出阻止修改应用程序数据文件的过程

有时,我的应用程序的某些文件被某些进程使用。例如,用户打开应用程序日志或类似的日志,而忘记关闭它。这在安装/升级/卸载时会导致一些错误。在这种情况下,我想找出正在使用文件的进程,并向用户显示一条消息,指出已使用文件。

是否可以在Inno Setup中找出原因,哪个过程阻止脚本修改文件?至少当我在“代码”部分中尝试执行此操作时。

inno-setup

0
推荐指数
1
解决办法
417
查看次数