您的位置:首页 > 编程语言

[CF.Skills]托管代码在Smartphone上创建快捷方式

2008-04-15 20:57 253 查看
[CF.Skills]托管代码在SmartPhone上创建快捷方式

摘要 以前我们经常是同步后在PC机上Copy程序并选择”粘贴快捷方式”,在Smartphone上添加快捷菜单,本文介绍了另外一种通过编程在Smartphone上创建快捷方式的方案。

Keywords Smartphone,Shortcut,windows mobile,.NET Compact Framework,C#

尽管可以在制作CAB安装文件的工程中,通过强大的VS,简单的点击两下鼠标就能给安装文件添加快捷方式,但是有时候我们也需要在自己程序中实现这个功能,比如我们希望我们的程序是不需安装但是又要有快捷方式以方便用户操作。

在Pocket PC上面要Copy一个快捷菜单是很easy的。只需再文件浏览器中选中你的文件并长按,菜单中选择Copy(复制):

SHCreateShortcut(@"\Windows\StartUp\" +

Path.GetFileNameWithoutExtension(applicationPath) + ".lnk", "\"" +

applicationPath + "\"");

[DllImport("coredll.dll", EntryPoint="SHCreateShortcut") ]

private static extern bool SHCreateShortcut(string shortcut, string target);

但是我们希望完全以C#实现的方式来做得更优雅,同时可以省略掉P/invoke的开销。

事实上,在Windows CE和Windows Mobile中快捷方式文件本身是一个很简单的纯字符文本的文件。如果你用记事本打开那些CE-Based的系统中(如Smartphone)上的一个快捷方式(.ink文件),你看到的将是类似下面所示的文本内容:

26#"\Windows\BubbleBreaker.exe”

其基本结构如下:

{目标路径命令包含的字符数}#"{目标路径命令}".

Tips这里所说的目标路径命令包含的字符数不包括引号在内,尽管和Windows Shell类似,在路径不包括空格的时候可以省略引号,但是习惯上还是建议始终使用引号

注意这里的目标路径命令很可能是带参数的,你需要用空格把参数和路径隔开,如果有N个参数,那么这N和参数都应当是用空格隔开的,这也是习惯用引号把路径引起来的原因。比如:

61#"\Program Files\Windows Media
Player\wmplayer.exe" \fullscreen

表示指向的路径是“\Program Files\Windows Media Player\wmplayer.exe”,传递了一个参数“\fullscreen”

有了上述对快捷方式文件结构的理解,我们可以轻松的创建自己的快捷方式了:

StreamWriter sw;

FileStream fs;

private bool CreateShortCut(string destination, string shortCut, string parameters)

CreateShortCut(@"\Storage Card\ShortCut_SP.exe", @"\Windows\Start Menu\MyApp.lnk", "");

PS:这里我事先已经将模拟器的储存卡目录配置为程序输出目录

程序运行效果如下:



点击"Creat",创建快捷方式

然后我们可以在开始菜单中找到它了:Start-->All programs-->More



效果达到了,没有安装包,没有P/invoke,同样能在Smartphone上面创建自己的快捷方式

完整的代码在此处下载

Enjoy!

©Freesc Huang

黄季冬<fox23>@HUST

2008/4/15
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: