背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口
2021-04-02 21:25
标签:move win one 反馈 end family ase stack private [源码下载] Information/ProfileInfo.xaml.cs Tools/FindSubClass.xaml.cs 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口 标签:move win one 反馈 end family ase stack private 原文地址:https://www.cnblogs.com/webabcd/p/9211815.html
作者:webabcd
介绍
背水一战 Windows 10 之 其它
示例
1、演示如何通过 Windows.System.Profile 命名空间下的类获取信息
Information/ProfileInfo.xamlPage
x:Class="Windows10.Information.ProfileInfo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Information"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
Grid Background="Transparent">
StackPanel Margin="10 0 10 10">
TextBlock Name="lblMsg" TextWrapping="Wrap" Margin="0 10 10 10" />
StackPanel>
Grid>
Page>
/*
* 演示如何通过 Windows.System.Profile 命名空间下的类获取信息
*
* 主要可获取到设备类型,系统版本号等
*/
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.System.Profile;
namespace Windows10.Information
{
public sealed partial class ProfileInfo : Page
{
public ProfileInfo()
{
this.InitializeComponent();
this.Loaded += ProfileInfo_Loaded;
}
private void ProfileInfo_Loaded(object sender, RoutedEventArgs e)
{
// 获取设备类型,目前已知的返回字符串有:Windows.Mobile, Windows.Desktop, Windows.Xbox
lblMsg.Text = string.Format("DeviceFamily: {0}", AnalyticsInfo.VersionInfo.DeviceFamily);
lblMsg.Text += Environment.NewLine;
// 获取系统版本号,一个长整型值
lblMsg.Text += string.Format("DeviceFamilyVersion: {0}", AnalyticsInfo.VersionInfo.DeviceFamilyVersion);
lblMsg.Text += Environment.NewLine;
// 将长整型的系统版本号转换为 major.minor.revision.build 的方式
string versionString = AnalyticsInfo.VersionInfo.DeviceFamilyVersion;
ulong version = ulong.Parse(versionString);
ulong v1 = (version & 0xFFFF000000000000L) >> 48;
ulong v2 = (version & 0x0000FFFF00000000L) >> 32;
ulong v3 = (version & 0x00000000FFFF0000L) >> 16;
ulong v4 = (version & 0x000000000000FFFFL);
string v = $"{v1}.{v2}.{v3}.{v4}";
lblMsg.Text += string.Format("DeviceFamilyVersion(major.minor.revision.build): {0}", v);
lblMsg.Text += Environment.NewLine;
// 获取当前的“向 Microsoft 发送你的设备数据”的收集等级。在“设置”->“隐私”->“反馈和诊断”中配置(Security, Basic, Enhanced, Full)
lblMsg.Text += string.Format("PlatformDiagnosticsAndUsageDataSettings.CollectionLevel: {0}", PlatformDiagnosticsAndUsageDataSettings.CollectionLevel);
lblMsg.Text += Environment.NewLine;
// 检查当前配置是否允许指定级别的信息收集
lblMsg.Text += string.Format("PlatformDataCollectionLevel.Full: {0}", PlatformDiagnosticsAndUsageDataSettings.CanCollectDiagnostics(PlatformDataCollectionLevel.Full));
lblMsg.Text += Environment.NewLine;
// 在“设置”->“隐私”->“反馈和诊断”中配置的“向 Microsoft 发送你的设备数据”发生变化时触发的事件
PlatformDiagnosticsAndUsageDataSettings.CollectionLevelChanged += PlatformDiagnosticsAndUsageDataSettings_CollectionLevelChanged;
}
private async void PlatformDiagnosticsAndUsageDataSettings_CollectionLevelChanged(object sender, object e)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
lblMsg.Text += string.Format("PlatformDiagnosticsAndUsageDataSettings.CollectionLevel: {0}", PlatformDiagnosticsAndUsageDataSettings.CollectionLevel);
lblMsg.Text += Environment.NewLine;
lblMsg.Text += string.Format("PlatformDataCollectionLevel.Full: {0}", PlatformDiagnosticsAndUsageDataSettings.CanCollectDiagnostics(PlatformDataCollectionLevel.Full));
lblMsg.Text += Environment.NewLine;
});
}
}
}
2、用于查找指定类或接口的所在程序集的所有子类和子接口
Tools/FindSubClass.xamlPage
x:Class="Windows10.Tools.FindSubClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Tools"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
Grid Background="Transparent">
ScrollViewer Margin="10 0 10 10">
StackPanel Name="root" Margin="5">
Button Name="btnFind" Content="查找指定类或接口的所在程序集的所有子类或子接口" Margin="1 5 1 20" Click="btnFind_Click" />
StackPanel>
ScrollViewer>
Grid>
Page>
/*
* 用于查找指定类或接口的所在程序集的所有子类和子接口
*/
using System;
using System.Reflection;
using System.Collections.Generic;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using System.Linq;
namespace Windows10.Tools
{
public sealed partial class FindSubClass : Page
{
public FindSubClass()
{
this.InitializeComponent();
}
private void btnFind_Click(object sender, RoutedEventArgs e)
{
// 这样不行
// Type type = Type.GetType("Windows.UI.Xaml.Controls.Button");
Type type = typeof(Windows.UI.Xaml.UIElement);
List
OK
[源码下载]
文章标题:背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口
文章链接:http://soscw.com/essay/71548.html