2012-04-11 10 views
13

Estoy desarrollando la aplicación con el estilo de metro de Windows 8. Esta aplicación tiene alguna característica más si se ejecuta en PC de escritorio en comparación con la tableta. Pero mi problema es cómo detectar la aplicación que se ejecuta en PC o Tab. No quiero lanzar 2 compilaciones por separado para PC y TAB.Determinar la aplicación de metro se está ejecutando en la pestaña de Windows 8 o PC de escritorio

Por favor, ayúdame. Actualización: ¿Desde cuándo es posible hacerlo con GetSystemMatrics? En el escritorio, nuestra aplicación se comportan como cliente y el servidor, pero en la pestaña y el dispositivo móvil que se comporte como cliente sólo

+5

¿Por qué te importa que sea una tableta? ¿Esa CPU es importante para ti? ¿O la presencia de un mouse/teclado? ¿O algo mas? – svick

+0

@svick: en el escritorio, nuestra aplicación se comporta como cliente y servidor, pero en la pestaña y dispositivo móvil se comporta como cliente solamente. – Mahantesh

+4

¿Qué sucede cuando el usuario toma su tableta y la coloca en una estación de acoplamiento con teclado, mouse y monitor externo? –

Respuesta

0

Mi sugerencia sería que llamar a la API GetSystemInfo en el coredll

Aquí es una ejemplo llamada:

[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; 
    } 

Si obtiene esta información de la tableta, debe devolver un tipo de procesador de 2577, ya que se ejecuta en los procesadores ARM, creo. Es posible que deba encontrar el tipo de procesador específico al que se dirige o pasar una lista de tipos de procesadores específicos.

+4

Sería un error suponer que todas las tabletas son ARM. Eso es cierto hoy, pero Intel tiene la intención de entrar en ese mercado. –

+0

Cierto, pero a ese ritmo, ¿qué hace que una tableta sea diferente de una PC estándar aparte del hardware? Podríamos verificar la falta de mouse o teclado, supongo, o el tipo. Posiblemente el tamaño de la pantalla? Las aplicaciones WPF suelen jugar muy bien con pantallas de diferentes tamaños, así que supongo que la siguiente pregunta es ¿cuál es la intención de diferenciar entre una tableta y una PC? –

+1

La pregunta original establece "más funciones si se ejecuta en PC de escritorio". Como esas características no estaban definidas, no puedo responder su pregunta. –

7

El espacio de nombres Windows.Devices tiene una gran cantidad de información sobre las capacidades del dispositivo. Por ejemplo, para determinar si el dispositivo está activado táctil, puede utilizar:

var hasTouch = Windows.Devices.Input 
        .PointerDevice.GetPointerDevices() 
        .Any(p => p.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch); 
+4

Es cierto. Sin embargo, consulte los escritorios HP TouchSmart que se venden en Walmart y Staples y en muchas otras tiendas. Son computadoras de escritorio completas, con pantallas táctiles.No querrás accidentalmente pensar que estás en una tableta simplemente midiendo Touch. – djdanlib

5

@Mahantesh: Si es específicamente entre los PC de sobremesa & Tablet (excluyendo portátil), entonces usted puede comprobar los "propiedades de la batería" como AC/Battery Supply, Battery remaining etc. que, por lo que yo sé, están disponibles solo para computadoras que funcionan con energía de la batería & ciertamente Desktop no hace eso.

En términos más simples, la notificación de la batería no está disponible para mi PC de escritorio, mientras que está allí para mi computadora portátil.

+0

@Dardev: gracias ... pensaré en esto. – Mahantesh

+0

@Mahantesh: Si esto te resulta útil, por favor agrega un voto ... :) No tengo muchos. –

+0

Una PC de escritorio puede tener 'propiedades de batería' al conectar un sistema Batterty-Backup/UPS (generalmente a través de un usb). – hometoast

Cuestiones relacionadas