我试图让DWM colorizationColor使用:Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\DWM").GetValue("ColorizationColor")
然而,它返回的是-2144154163 (实际值为2150813133)。
我认为这是因为32位整数不能保持这个值.但是,事件转换(或转换)到int64失败。
这听起来可能是个容易回答的问题,但我找不到解决办法:
发布于 2010-11-14 15:25:20
颜色值和int值一样不切实际,最好是快速转换它。配置密钥的小包装器也不会造成伤害:
using System.Drawing;
...
public static Color GetDwmColorizationColor() {
using (var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\DWM")) {
return Color.FromArgb((int)key.GetValue("ColorizationColor"));
}
}但是不要这样做,它有一个有文档的API。P/Invoke DwmGetColorizationColor()来获取值,您将得到保证的兼容性行为。如果某些未来的Windows版本更改了此注册表详细信息,则非常重要。有关声明,请访问pinvoke.net。
发布于 2010-11-14 15:09:19
您需要进行一次未检查的转换:
unchecked {
value = (uint)intValue;
}编辑:Registry.GetValue返回包含装箱Int32值的object。
直接从对象进行转换时,首先需要将其解压缩为其实际类型,然后将其转换为uint。
unchecked {
value = (uint)(int)boxedObject;
}https://stackoverflow.com/questions/4178049
复制相似问题