[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
摘要 以前我们经常是同步后在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
相关文章推荐
- [CF.Skills]托管代码在SmartPhone上创建快捷方式(转)
- 使用代码创建快捷方式
- js 创建快捷方式的代码(fso)
- Android中创建快捷方式代码实例
- .NET CF WM上创建快捷方式
- js 创建快捷方式的代码(fso)
- 安卓代码中创建快捷方式
- iOS创建桌面快捷方式代码
- smartphone 创建快捷方式 shorcut(1)
- [CF.Skills]托管代码中使用PocketOutlook轻松查找和添加联系人
- Chrome 浏览器创建网站快捷方式(加入收藏夹)代码
- c#通过纯代码创建桌面快捷方式、创建程序菜单项、将网页添加到收藏夹
- PHP创建桌面快捷方式的实例代码
- 利用托管代码的方式创建Visifire Chart
- c# 纯代码方式创建快捷方式
- windows shell 创建快捷方式和读取快捷方式的代码
- BAT 批处理创建桌面快捷方式代码大全
- .NET CF WM上创建快捷方式
- 如何使用C#代码创建快捷方式文件详解
- 创建程序菜单和快捷方式的代码