新的开始

不以物喜,不以己悲

导航

我的第一个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里能够修正这个问题。

 

posted on 2015-06-26 22:58  新的开始  阅读(2310)  评论(7编辑  收藏  举报