诗盗·朝夕&青春在潮汐间逝去,其实哥想说的是月经……

《#诗盗#·朝夕&青春在潮汐间逝去,其实哥想说的是月经……》:朝生蛋蛋暮成鸟,一夕风霜倾海潮。骚年转眼已大叔,黯然对墙撸一炮。

改编自霹雳角色“青丝台·朝如青丝暮成雪”的诗号。

朝如青丝暮成雪,
一夕风霜倾海楼。

注解

早上生的蛋到了晚上已经孵化成小鸟了,风霜引起的海潮一夕便可倾倒众生。生命多么脆弱,岁月如此残酷,仿佛昨日还是小骚年,转眼却已是大叔,呵……黯然感叹时光蹉跎,只好对墙撸一炮蛋定一下了……

开发 Windows RT 桌面应用(来自 Surface RT)

闲谈

这篇文章是用 Surface RT 写的。先喷一下这设备不爽的地方!

  1. 请看 PPI 对比:
  • Surface RT = sqrt(1366^2+768^2)/10.6 = 147.8

  • XPS 15 = sqrt(1920^2+1080^2)/15.6 = 141.2

居然才比 XPS 15 高了一小点!

  1. 后摄像头成像质量太一般。

再来要说的是,微软的自残行为。UMU 用过 iOS、Android 平板,甚至见过有人用 XP 平板,但相信,论系统本身 Windows RT 是最强大的。不过微软为了战略目标,把 RT 强大的一面给锁起来了。对开发人员来说,这锁表现在以下几点:

  1. 系统本身不允许运行没有微软签名的 EXE;

  2. VS2012 默认无法编译 ARM 程序;

  3. VS2012 自带的 ARM lib 缺失。

开始折腾

下面就是简单介绍一下如何突破这三个封锁:

1. 解锁签名限制

RT Jailbreak Tool By Netham45, Version 1.20

http://forum.xda-developers.com/showthread.php?t=2092158

另外,有很多开源软件已经移植,在开发自己的程序之前,可以先试试,Desktop apps ported to Windows RT:http://forum.xda-developers.com/showthread.php?t=2092348

2. 开启 VS2012 的 ARM 支持

来自 http://stackoverflow.com/questions/11151474/can-arm-desktop-programs-be-built-using-visual-studio-2012 的答案

You can edit the file:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\ARM\Microsoft.Cpp.ARM.Common.props

对 VS2013 路径是:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Platforms\ARM\Platform.Common.props

In thesection add the line:

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>

before </PropertyGroup>

And that’s all, you can build ARM desktop apps with VS2012.

某些工程需要强制定义 _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE 才可以。

3.获取更多的 ARM libs

开源工具应运而生:https://github.com/peterdn/dll2lib

然后,炫耀一下,UMU 已经把自己的一个小作品“天翼宽带智能提速”移植成功。这个程序比较小,一两个小时从解锁到移植开发全部搞定。

最后,如果程序是 .NET 4.x 写的,是可以直接跑在 RT 上的,所以为了省力气,也许应该考虑多用 .NET。

诗盗·震邦

《#诗盗#·震邦》:汶川宝宝芦山没,装逼作秀唱你妹。各种悲剧各种坑,一半红情一半黑。

注解

评新闻《汶川地震宝宝芦山地震去世》和《韩红怒斥赈灾歌曲:唱歌比救援还重要?》,顺便纪念过世的好友陈震邦。

解析 Windows 快捷方式的经验

需求

在 Windows 平台,解析快捷方式(.lnk 文件),获得它指向的目标路径。

分析

有以下相关 API 可以使用:

  • IShellLink 对象
  • MsiGetShortcutTarget

实践

首先,当然是 MSDN 一下 IShellLink 这个 COM 接口,照着写一下,然后测试。郁闷的事情开始了!IShellLink 对象无法正确解析 MSI 创建的新型快捷方式。

所以要用 MsiGetShortcutTarget + MsiGetComponentPath 先尝试获得,失败了才用 IShellLink。

继续测试大量快捷方式后,发现另一个问题:当自己是 x86 程序时,读取的快捷方式如果指向的是 Program Files 下的任何文件或者文件夹,都会被强制解析为 Program Files (x86),好智能啊!!

搜一下,发现使用 IShellLink 对象的前提下,无法解决这个问题。无数老外都郁闷!

于是开始逆向,发现是 IDL 被读出来时就已经做了转换,所以用 IShellLink::GetIDList + SHGetPathFromIDList 也是浪费力气。

最后无奈了,如果发现自己在 WOW64 下运行就直接自己解析快捷方式了……

参考

  1. 【已失效】http://www.vckbase.com/index.php/wv/1132
  2. https://www.codeproject.com/Articles/24001/Workaround-for-IShellLink-GetPath
  3. 【已失效】http://biancheng.dnbcw.info/1000wen/447642.html