我正在开发具有 Windows 8 Metro 风格的应用程序。与平板电脑相比,如果它在台式电脑上运行,此应用程序具有更多功能。但我的问题是如何检测应用程序是否在 PC 或 Tab 中运行。我不想为 PC 和 TAB 分别发布 2 版本。
请帮我。更新:GetSystemMatrics 是否可以做到这一点?在桌面上,我们的应用程序的行为类似于客户端和服务器,但在选项卡和移动设备中,它的行为仅类似于客户端
我正在开发具有 Windows 8 Metro 风格的应用程序。与平板电脑相比,如果它在台式电脑上运行,此应用程序具有更多功能。但我的问题是如何检测应用程序是否在 PC 或 Tab 中运行。我不想为 PC 和 TAB 分别发布 2 版本。
请帮我。更新:GetSystemMatrics 是否可以做到这一点?在桌面上,我们的应用程序的行为类似于客户端和服务器,但在选项卡和移动设备中,它的行为仅类似于客户端
Windows.Devices 命名空间包含大量有关设备功能的信息。例如,要确定设备是否启用触摸,您可以使用:
var hasTouch = Windows.Devices.Input
.PointerDevice.GetPointerDevices()
.Any(p => p.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch);
@Mahantesh:如果它专门在台式电脑和平板电脑(不包括笔记本电脑)之间,那么您可以检查“电池属性”,例如交流电/电池供电、电池剩余电量等,据我所知,这仅适用于使用电池运行的计算机电源和桌面当然不会那样做。
简而言之,电池通知不适用于我的台式电脑,而它适用于我的笔记本电脑。
我的建议是调用 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;
}
如果您从平板电脑获取此信息,它应该返回 2577 的处理器类型,因为我相信它运行在 ARM 处理器上。您可能需要找到目标处理器类型或传入目标处理器类型列表。