HCL
HCL

Reputation: 36815

Detecting the platform of a Windows Store App

Is there a possibility to ask at runtime if a Windows Store app (compiled for ARM and x86/64) is executed currently on an ARM-device or more specific on a Microsoft Surface Tablet from within c# or is it necessary to compile two Versions of the same app to behave different on different plattforms?

Upvotes: 1

Views: 200

Answers (2)

gdc
gdc

Reputation: 545

using Windows.ApplicationModel;

Package package = Package.Current;
PackageId packageId = package.Id;

String arch = String.Format("{0}", packageId.Architecture);

This will return "X86" or "ARM", depending on the underlying hardware.

Upvotes: 1

Ross Dargan
Ross Dargan

Reputation: 6021

This can be done via the following code (according to this SO post):-

[DllImport("kernel32.dll")]
internal static extern void GetNativeSystemInfo(ref SystemInfo lpSystemInfo);

internal static bool IsArmBased()
{
    var sysInfo = new SystemInfo();
    GetNativeSystemInfo(ref sysInfo);
    return sysInfo.wProcessorArchitecture == ProcessorArchitectureArm; //ushort 5
}

This does pass the WACK test, test I wouldn't count on it being around forever. Think very hard about why you need this information (is it just for stats, or are you changing the behaviour of your app, if so why!?)

Upvotes: 3

Related Questions