我的第一个WP8.1应用总结
我的LUMIA925已经买了很久了,想自己开发WP应用放在上面,却一直想不到有什么特别的想法和需要。前几天的事情正好让我有了这个机会。
前几天在客户机房工作的时候,同事打电话来说另一个客户由于换了电脑,需要发新的激活码过去激活我们的软件。我不得不打开本本,把同事发到手机QQ的机器码输入到本本上的注册机程序里,再把生成的激活码输入到手机发过去。对于在外面本本不能上网的情况这真是一件繁琐的事。晚上在家没事的时候就想着把这个注册机移植到我的LUMIA925上。安装VS补丁和激活手机开发的步骤就不赘述了,具体百度之。我在VS2013中选择的是Windows Phone应用中的空白应用。
先贴个图演示一下winform版注册机,实际用到的就是两个Label、两个TextBox和一个Button,用到的激活码生成算法也很简单,就是对机器码做一个加salt的MD5操作。

对照winform版的界面,再考虑手机操作的便捷性,最后WP版的效果就是这样的:

winform中的label替换成了WP中的TextBlock,另外再添加了两个AppBarButton,作为“清除”和“复制”的按钮。
然后开始写代码,却发现一下掉到两个坑里了。。。
坑1:WP8.1中没有默认提供MD5CryptoServiceProvider类,只能自己实现。还好在网上搜到了前人写好的,直接下载添加就可以用了。
坑2:WP8.1应用商店APP竟然不支持对剪贴板的操作!!没办法,最后采用的是点击“复制”按钮,自动全选激活码并弹出Toast通知,代码如下:
private void btnCopy_Click(object sender, RoutedEventArgs e)
{
txtActivationCode.Focus(FocusState.Programmatic);
txtActivationCode.SelectAll(); XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01); // 找到模板中“'text'”元素,然后添加通知的内容 XmlNodeList elements = toastXml.GetElementsByTagName("text"); elements[0].AppendChild(toastXml.CreateTextNode("激活码已全选,请手动复制!")); // 通过通知的模板创建一个Toast通知 ToastNotification toast = new ToastNotification(toastXml); // 弹出通知 ToastNotificationManager.CreateToastNotifier().Show(toast); }
注意1:与winform不同,在使用TextBox.SelectAll方法之前,必须先对TextBox设置焦点;
注意2:.程序中使用Toast通知,需要在创建应用程序包之后自动生成的Package.appxmanifest中“支持Toast通知”选择“是”。效果如下:

终于做好了我的第一个WP应用,总算对得起我的925了,只可惜复制功能还是有缺陷,只能期望WP10里能够修正这个问题。
我的第一个WP8.1应用总结的更多相关文章
- 第一个WP8程序,照相机
安装win8 64位,vs2013(包含wp8 sdk),百度各种得到学生开发者账户之后,终于可以试一下将自己的app部署到手机上的感觉了. 首先来个简单练练手的照相机功能 照相 即从主界面进入到照相 ...
- 我的第一个wp8小程序
一:截图,功能介绍:点击音乐红色按钮,播放铃声 二:代码 XAML代码 <phone:PhoneApplicationPage x:Class="PhoneApp1.MainPage& ...
- 如何发布第一个WP8.1程序(VisualStudio2015)
学习WP开发有一段时间了,近一个月开始着手开发程序,并在开发程序中不断地学习(有一定的基础后,边开发程序,边学习是很好的,能练习运用所学的知识,并能在遇到问题后上网上资料不断地学习,很有效果,因为老是 ...
- 跨过几个坑,终于完成了我的第一个Xamarin Android App!
时间过得真快,距离上次发随笔又是一年多.作为上次发的我的第一个WP8.1应用总结的后继,这次同样的主要功能,改为实现安卓版APP.前几个月巨硬收购Xamarin,把Xamarin集成到VS里了,大大方 ...
- Wp8开发环境搭建总结
原地址:http://blog.csdn.net/lixing732100721/article/details/8564985 注意:技术发展太快 此文章年代已久 请大家酌情参照 系统要求(来自 ...
- Cordova WP8 平台安装部署
原文:Cordova WP8 平台安装部署 Cordova是一个开放源码移动开发框架. 它允许您使用标准的 web 技术如 HTML5. CSS3 和 JavaScript 进行跨平台开发,避免每个移 ...
- Cordova WP8 插件开发
原文:Cordova WP8 插件开发 前面博客中介绍了Cordova WP8平台上的安装部署,Cordova扩展可以利用WP8本地代码扩展WebApp的功能,调用本地能力需要开发相应的插件,下面以闪 ...
- Windows Phone 8.1 开发技术概览 (Universal APP)
前一阵真的比较懒 WP8.1 已经出来这么长时间了现在才更新BLOG让大家久等了,今天我先为大家介绍下 WP 8.1的开发框架,什么是微软所推崇的 Universal APP,以及我们要开发 Univ ...
- MVVM-Sidekick 之SendToEventRouterAction使用
在WP开发中点击列表项跳转到详情页是一个很常用的功能,但是有可能项模板中还有其他的区域,比如点击标题跳转到详情页,点击"赞"图标送一个赞,点击"踩"图标踩一下, ...
随机推荐
- JAVA并发编程
拜读了一篇很详尽的博文,特此转载http://www.cnblogs.com/dolphin0520/p/3920373.html, 并做了一些更正. 一.内存模型的相关概念. 大家都知道,计算机在执 ...
- Linux:删除程序
首先查看程序是否安装,以mariadb 为例 卸载程序 .........
- ld.so.conf 和 ldconfig
1. 查看执行文件的链接库 ldd 例子: # ldd /sbin/sln not a dynamic executable “not a dynamic executable”是 ldd 说明 sl ...
- eclipse 安装svn插件
1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版 如果没有安装的请到这里下载安装:http://ecli ...
- 燕十八MySQL优化学习笔记
观察 show status; 里面的这三个参数;Queries Threads_connected Threads_running判断周期性变化 -------------------------- ...
- 个人JS零碎知识整理
1."DOM2级事件"规范要求的事件流包括三个阶段:事件捕获阶段.处于目标阶段.事件冒泡阶段 2.isNaN() 数字.空串.空格 返回false 变量是数字时返回fa ...
- yii-basic-app-2.0.5/basic/config/web.php
<?php $params = require(__DIR__ . '/params.php'); $config = [ 'id' => 'basic', 'basePath' => ...
- mysql事务和并发控制
谈到事务,首先想到的问题是并发控制.比如两个用户同时操作数据库里面的一张表,一个正在读数据,一个正在删除数据,那么读数据的读出的结果究竟是多少?并发可以提高系统的性能,让多个用户同时操作一份数据,但为 ...
- 自己用c语言实现字符串处理库函数以及扩展
1.实现基本的c语言库函数: int myStrlen( const char* str);//根据传入的字符串首地址获取字符串长度:返回值为长度 int myStrlen(const char* s ...
- 【小错误】SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
1.今天在scott用户下执行语句跟踪时报了如下错误: SCOTT@ORA11GR2>set autotrace on SP2: Cannot find the Session Identifi ...