【WIN10】判斷程序運行在哪個平台
其中的一個方法是:
string x = AnalyticsInfo.VersionInfo.DeviceFamily;
判斷 x 的值,有”Windows.Mobile“,”Windows.Desktop“。我沒有XBOX設備,所以並不清楚XBOX下會得到什麼值。
當我看到返回值類型是string時,我就覺得微軟在扯淡了~~~~因為哪天微軟把這個字符串一修改,我就得修改我的軟件了~~~為毛不用枚舉~~
注意:PAD和PC都會得到Windows.Desktop。
就是說,如果使用這種方法,你無法判斷到底是不是運行在”移動端“。因為PAD也屬於移動端設備。
這個時候,我們需要第二個接口,獲取用戶的交互模式。
微軟提供了兩種用戶交互模式:鼠標、觸摸。
我寫了一個判斷是否運行在移動端的函數:
public static bool IsRunningOnMobile()
{
return UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Touch;
}
UserInteractionMode 有兩種模式,Touch 和 Mouse.
我測試了,在三種設備中得到的 DeviceFamily 與 UserInteractionMode,發現得到結果如下:
| PC | PAD | MOBILE | |
| DeviceFamily | Windows.Destop | Windows.Destop | Windows.Mobile |
| UserInteractionMode | Mouse | Touch | Touch |
測試PC與PAD很簡單,你不需要提供一個PC和一個PAD,按下面圖的方式操作,即可達到二者的切換:

最後得出的結論是,你只需要去判斷交互模式就可以了。因為你得到 Desktop 是沒有什麼用處的,交互模式才是最重要的。。
不過我還是沒有XBOX設備,不知道在XBOX上面會有什麼表現。
[END]
【WIN10】判斷程序運行在哪個平台的更多相关文章
- win10 uwp 使用 msbuild 命令行编译 UWP 程序
原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...
- 判斷作業系統為 64bit 或 32bit z
有時我們在開發Windows 桌面應用程式時,會發生一些弔詭的事情,作業系統位元數就是一個蠻重要的小細節,若您寫的應用程式在Windows 的32bit 作業系統上可以完美的運行,但不見得在64bit ...
- Python 基礎 - if else流程判斷
hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...
- 使用Facebook的SDK判斷來訪者是否已經按讃并成為本站粉絲團的成員
今天公司裡要做活動,其中有一項活動內容是要求來訪者按一下facebook粉絲團的讃,按了讃之後贈送現金.Facebook被墻大家眾所周知,在百度搜了一下發現因為被墻的原因導致國內涉及到Facebook ...
- Python 基礎 - for流程判斷
今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...
- Python 基礎 - while流程判斷
接續上次的代碼,是不是只有執行一次才就結束,想要再繼續猜,就要在執行一次,是不是有點挺麻煩的? 所以這次我們就來再多做一點點功能進去,讓代碼可以多次循環地執行代碼,Go.... 首先,我們先來了解一下 ...
- [转]如何使用VS 2013發布一個可以在Windows XP中獨立運行的可執行文件
https://read01.com/Mg337.html (台/湾的论坛,需要f/q) 1. 閱讀此文章的同學先看看我的另外一篇文章: 現在,我們深入探討一下: <如何使用VS 2013發布一 ...
- 重啓ubuntu后 VNC 自動運行
Vino-Server是Ubuntu自带的有個缺点:重启后不能自動運行(可能是基於安全吧!) 親身測試对象:windows & ubuntu 10.04已安装图形桌面gnome ***wind ...
- Javascript判斷function是否定義
jQuery可以用 isFunction() 來進行判斷 如果僅使用Javascript可以使用以下的方法 function isFunction(fn){ return typeof fn === ...
随机推荐
- php中global和$GLOBALS最浅显易懂的解释
官方文档: global指对变量的引用或者叫指针,$GLOBALS则是变量本身: $var1 = 1; $var2 = 2; function fun(){ $GLOBALS['var2'] = &a ...
- (一)利用 mdb 调试获取 nvlist_t 中 nvpair_t(name/value) 对
服务器:192.168.2.122 root@2236:~# mdb -k> ::spaADDR STATE NAME ...
- 2016.5.57—— Remove Duplicates from Sorted List
Remove Duplicates from Sorted List 本题收获: 指针: 不管什么指针在定义是就初始化:ListNode *head = NULL; 如果给head指针赋值为第一个no ...
- flask基础之蓝图的使用(七)
前言 关于蓝图是什么?或为什么使用蓝图的详细介绍,官方文档讲的很详细,不再赘述.简单来说,在大型的应用中,我们不想视图函数显得杂乱无章,难以维护,将众多的视图函数按照Api的设计规则进行切割是一个好方 ...
- 使用pandas把mysql的数据导入MongoDB。
使用pandas把mysql的数据导入MongoDB. 首先说下我的需求,我需要把mysql的70万条数据导入到mongodb并去重, 同时在第二列加入一个url字段,字段的值和第三列的值一样,代码如 ...
- Callable和futrue、ExecutorService的用法
首先说明是为了解决什么问题? 为了解决主线程无谓等待浪费服务器资源的问题.当主线程执行一个费时的操作时,比如客户端发起一个请求,该请求在服务器端处理很复杂,如需要调用其他系统的接口,总之比较耗时.这时 ...
- springmvc与struts的区别
一.拦截机制 1.Struts2 a.Struts2框架是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype ...
- docker stack 部署 redis
=============================================== 2019/4/16_第2次修改 ccb_warlock 更新 ...
- 29 A Quick Guide to Go's Assembler 快速指南汇编程序:使用go语言的汇编器简介
A Quick Guide to Go's Assembler 快速指南汇编程序:使用go语言的汇编器简介 A Quick Guide to Go's Assembler Constants Symb ...
- python基础--类的经典类vs新式类
经典类VS新式类区别 1)写法新式类class Person(object):#new style 经典类class Persion: #classical style 2)调用父类 新式写法用sup ...