2012-04-11 10 views
13

Rozwijam aplikację z systemem Windows 8 w stylu metra. Ta aplikacja ma więcej funkcji, jeśli działa na komputerze stacjonarnym w porównaniu do tabletu. Ale moim problemem jest to, jak wykrywać aplikację działającą na PC lub Tab. Nie chcę wydać osobno 2 kompilacji na PC i TAB.Określanie aplikacji Metro działa na karcie Windows 8 lub komputerze stacjonarnym

Proszę, pomóż mi. Aktualizacja: Wheter jest to możliwe dzięki GetSystemMatrics? W pulpicie, nasza aplikacja zachowuje się jak klient i serwer, ale na karcie i urządzeniu przenośnym zachowywać się jak klient tylko

+5

Dlaczego obchodzi cię tablet? Czy ten procesor ma dla ciebie znaczenie? Czy obecność myszy/klawiatury? Albo coś innego? – svick

+0

@svick: na pulpicie nasza aplikacja zachowuje się jak klient i serwer, ale na karcie i urządzeniu mobilnym zachowuje się jak klient. – Mahantesh

+4

Co się dzieje, gdy użytkownik bierze tablet i umieszcza go w stacji dokującej z klawiaturą, myszą i monitorem zewnętrznym? –

Odpowiedz

0

Moja sugestia byłoby zadzwonić do API GetSystemInfo w CoreDLL

Oto Przykład połączenia:

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

Jeśli pobrać te informacje z tabletem, należy zwrócić typ procesora od 2577, ponieważ działa na procesorach ARM wierzę. Może być konieczne znalezienie określonego typu procesora, na który celujesz, lub podanie listy ukierunkowanych typów procesorów.

+4

Byłoby błędem zakładać, że wszystkie tablety są ARM. To prawda, ale Intel zamierza wkroczyć na ten rynek. –

+0

To prawda, ale w takim tempie, co odróżnia tablet od standardowego komputera PC poza sprzętem? Moglibyśmy sprawdzić brak myszy lub klawiatury lub typ. Prawdopodobnie rozmiar ekranu? Aplikacje WPF zazwyczaj ładnie odtwarzają się na ekranach o różnych rozmiarach, więc domyślam się, że następnym pytaniem jest zamiar rozróżnienia między tabletem a komputerem. –

+1

Oryginalne pytanie stwierdza "więcej funkcji, jeśli działa na komputerze PC". Ponieważ te funkcje nie zostały zdefiniowane, nie mogę odpowiedzieć na twoje pytanie. –

7

Przestrzeń nazw Windows.Devices zawiera wiele informacji na temat możliwości urządzenia. Na przykład, aby określić, czy urządzenie jest dotykowy włączone, można użyć:

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

Prawda. Spójrz jednak na komputery stacjonarne HP TouchSmart sprzedawane w sklepach Walmart i Staples oraz w wielu innych sklepach. Są to pełne komputery stacjonarne z ekranami dotykowymi.Nie chcesz przypadkowo myśleć, że jesteś na tablecie, mierząc tylko dotyk. – djdanlib

5

@Mahantesh: Jeśli to konkretnie między Komputery PC & Tablet (wyłączeniem laptop), można sprawdzić „właściwości baterii” takie jak zasilanie AC/Battery, bateria pozostała itp., o ile wiem, że są dostępne tylko dla komputerów z zasilaniem bateryjnym & z pewnością Desktop tego nie robi.

Mówiąc prościej, powiadomienie o stanie baterii nie jest dostępne dla mojego komputera stacjonarnego, podczas gdy jest dostępne dla mojego laptopa.

+0

@Dardev: dzięki .. Zastanowię się nad tym. – Mahantesh

+0

@Mahantesh: Jeśli uważasz to za pomocne, proszę dodaj głos ... :) Nie mam wielu. –

+0

Komputer stacjonarny może mieć "właściwości baterii" poprzez podłączenie do niego systemu Batterty-Backup/UPS (zwykle przez usb). – hometoast

Powiązane problemy