我正在开发Windows 8 Metro风格的应用程序。如果在台式机上运行,此应用程序具有比平板电脑更多的功能。但我的问题是如何检测应用程序正在PC或平板电脑上运行。 我不想分别发布两个版本以供PC和平板电脑使用。
请帮助我。 更新:是否可以使用GetSystemMetrics来实现? 在桌面上,我们的应用程序像客户端和服务器一样运行,但在平板电脑和移动设备上,它只能像客户端一样运行。
我正在开发Windows 8 Metro风格的应用程序。如果在台式机上运行,此应用程序具有比平板电脑更多的功能。但我的问题是如何检测应用程序正在PC或平板电脑上运行。 我不想分别发布两个版本以供PC和平板电脑使用。
请帮助我。 更新:是否可以使用GetSystemMetrics来实现? 在桌面上,我们的应用程序像客户端和服务器一样运行,但在平板电脑和移动设备上,它只能像客户端一样运行。
Windows.Devices 命名空间提供了关于设备功能的丰富信息。例如,要确定设备是否支持触控功能,您可以使用以下代码:
var hasTouch = Windows.Devices.Input
.PointerDevice.GetPointerDevices()
.Any(p => p.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch);
我的建议是调用CoreDLL中的GetSystemInfo API。
以下是一个示例调用:
[DllImport("coredll")]
static extern void GetSystemInfo(ref SYSTEM_INFO pSI);
public struct SYSTEM_INFO
{
public uint dwOemId;
public uint dwPageSize;
public uint lpMinimumApplicationAddress;
public uint lpMaximumApplicationAddress;
public uint dwActiveProcessorMask;
public uint dwNumberOfProcessors;
public uint dwProcessorType;
public uint dwAllocationGranularity;
public uint dwProcessorLevel;
public uint dwProcessorRevision;
}