2012-04-11 32 views
13

Tôi đang phát triển ứng dụng có cửa sổ 8 kiểu tàu điện ngầm. Ứng dụng này có một số tính năng khác nếu nó chạy trên máy tính để bàn so với máy tính bảng. Nhưng vấn đề của tôi là làm thế nào để phát hiện ứng dụng đang chạy trong PC hoặc Tab. Tôi không muốn phát hành 2 phiên bản riêng biệt cho PC và TAB.Xác định ứng dụng metro đang chạy trong tab Windows 8 hoặc Desktop PC

Hãy giúp tôi. Cập nhật: Wheter có thể làm điều đó với GetSystemMatrics không? Trong desktop, ứng dụng của chúng tôi cư xử như client và server, nhưng trong tab và thiết bị di động nó hành xử như khách hàng chỉ

+5

Tại sao bạn quan tâm đó là máy tính bảng? CPU đó có quan trọng với bạn không? Hoặc sự hiện diện của một con chuột/bàn phím? Hay cái gì khác? – svick

+0

@svick: Trong màn hình nền, ứng dụng của chúng tôi hoạt động giống như ứng dụng khách và máy chủ, nhưng trong tab và thiết bị di động, nó hoạt động giống như ứng dụng khách. – Mahantesh

+4

Điều gì sẽ xảy ra khi người dùng sử dụng máy tính bảng của họ và đặt nó vào trạm nối với bàn phím, chuột và màn hình ngoài? –

Trả lời

0

Đề nghị của tôi sẽ được gọi xuống API GetSystemInfo trong CoreDLL

Dưới đây là một ví dụ:

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

Nếu bạn tìm nạp thông tin này từ máy tính bảng, nó sẽ trả về loại bộ xử lý 2577 vì nó đang chạy trên bộ xử lý ARM tôi tin. Bạn có thể cần phải tìm loại bộ vi xử lý cụ thể mà bạn đang nhắm mục tiêu hoặc chuyển vào danh sách các loại bộ xử lý được nhắm mục tiêu.

+4

Nó sẽ là một sai lầm để giả định tất cả các máy tính bảng là ARM. Đó là sự thật ngày hôm nay, nhưng Intel có ý định đột nhập vào thị trường đó. –

+0

Đúng, nhưng ở tốc độ đó, điều gì tạo nên một chiếc máy tính bảng khác với một chiếc PC tiêu chuẩn ngoài phần cứng? Chúng tôi có thể kiểm tra việc thiếu chuột hoặc bàn phím tôi giả sử hoặc loại. Có thể kích thước màn hình? Các ứng dụng WPF thường chơi độc đáo với các màn hình có kích thước khác nhau vì vậy tôi đoán câu hỏi tiếp theo là mục đích phân biệt giữa máy tính bảng và PC –

+1

Câu hỏi ban đầu nói "nhiều tính năng hơn nếu nó chạy trên máy tính để bàn". Vì các tính năng đó không được xác định nên tôi không thể trả lời câu hỏi của bạn. –

7

Không gian tên Windows.Devices có rất nhiều thông tin về khả năng của thiết bị. Ví dụ để xác định xem thiết bị được liên lạc được kích hoạt, bạn có thể sử dụng:

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

Đúng. Tuy nhiên, hãy xem các máy tính để bàn HP TouchSmart được bán tại Walmart và Staples và rất nhiều cửa hàng khác. Họ là máy tính để bàn đầy đủ, với màn hình cảm ứng.Bạn không muốn vô tình nghĩ rằng mình đang sử dụng máy tính bảng chỉ bằng cách đo Touch. – djdanlib

5

@Mahantesh: Nếu đó là đặc biệt giữa Desktop PC & Tablet (trừ máy tính xách tay), sau đó bạn có thể kiểm tra "properties pin" chẳng hạn như nguồn AC/Battery, pin còn lại, vv mà theo như tôi biết chỉ có sẵn cho các máy tính chạy bằng nguồn pin & chắc chắn Máy tính để bàn không làm điều đó.

Trong điều kiện đơn giản hơn, thông báo pin không có sẵn cho máy tính để bàn của tôi trong khi máy tính xách tay của tôi có sẵn.

+0

@Dardev: cảm ơn .. Tôi sẽ nghĩ về điều này. – Mahantesh

+0

@Mahantesh: Nếu bạn thấy điều này hữu ích, vui lòng thêm phiếu bầu ... :) Tôi không hav nhiều. –

+0

Một máy tính để bàn có thể có 'tính chất pin' bằng cách kết nối một hệ thống Batterty-Backup/UPS với nó (thường là thông qua usb). – hometoast

Các vấn đề liên quan