2012-04-11 14 views
13

Sto sviluppando un'app con Windows 8 Metro style. Questa app ha alcune funzionalità in più se è in esecuzione sul PC desktop rispetto a Tablet. Ma il mio problema è come rilevare l'applicazione è in esecuzione in PC o scheda. Non voglio rilasciare 2 build separatamente per PC e TAB.Determina l'app della metropolitana in esecuzione nella scheda Windows 8 o PC desktop

Per favore aiutatemi. Aggiornamento : Wheth è possibile farlo con GetSystemMatrics? Nel desktop, la nostra applicazione si comportano come client e server, ma nella scheda e il dispositivo mobile che si comportano come cliente soltanto

+5

Perché ti importa è un tablet? Questa CPU è importante per te? O la presenza di un mouse/tastiera? O qualcos'altro? – svick

+0

@svick: nel desktop, la nostra app si comporta come client e server, ma nella scheda e nel dispositivo mobile si comporta come solo client. – Mahantesh

+4

Cosa succede quando l'utente prende il suo tablet e lo inserisce in una docking station con una tastiera, un mouse e un monitor esterno? –

risposta

0

Il mio suggerimento sarebbe quello di chiamare l'API GetSystemInfo nel coredll

Ecco un esempio di chiamata:

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

Se si recupera queste informazioni dal tablet, deve restituire un tipo di processore di 2577 perché è in esecuzione su processori ARM credo. Potrebbe essere necessario trovare il tipo di processore specifico che si sta targetizzando o passare in un elenco di tipi di processore mirati.

+4

Sarebbe un errore supporre che tutti i tablet siano ARM. È vero oggi, ma Intel è intenzionata a entrare in quel mercato. –

+0

Vero, ma a quella velocità ciò che rende un tablet diverso da un PC standard oltre all'hardware? Potremmo verificare la mancanza di mouse o tastiera, suppongo o il tipo. Forse le dimensioni dello schermo? Le applicazioni WPF in genere funzionano bene con schermi di dimensioni diverse, quindi suppongo che la prossima domanda sia l'intento di distinguere tra un tablet e un PC. –

+1

La domanda originale afferma "più funzionalità se è in esecuzione su PC desktop". Poiché tali caratteristiche non sono state definite, non posso rispondere alla tua domanda. –

7

Lo spazio dei nomi Windows.Devices offre numerose informazioni sulle funzionalità del dispositivo. Ad esempio, per determinare se il dispositivo è tocco abilitato, è possibile utilizzare:

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

Vero. Tuttavia, guarda i desktop HP TouchSmart venduti a Walmart e Staples e molti altri negozi. Sono PC desktop completi, con touch screen.Non vuoi pensare accidentalmente di essere su un tablet semplicemente misurando Touch. – djdanlib

5

@Mahantesh: Se è in particolare tra PC desktop & Tablet (esclusi i laptop), quindi è possibile controllare le "Proprietà della batteria" come AC/batteria, batteria rimanente ecc. che, per quanto ne so, sono disponibili solo per computer alimentati a batteria & certamente Desktop non lo fa.

In termini più semplici, la notifica della batteria non è disponibile per il mio PC desktop mentre è lì per il mio laptop.

+0

@Dardev: grazie .. ci penserò su questo. – Mahantesh

+0

@Mahantesh: Se lo trovi utile, per favore aggiungi un voto ... :) Non ne ho molti. –

+0

Un PC desktop può avere "proprietà della batteria" collegando un sistema Batterty-Backup/UPS (solitamente tramite USB). – hometoast

Problemi correlati