.NET CF WM上创建快捷方式
生活随笔
收集整理的這篇文章主要介紹了
.NET CF WM上创建快捷方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WM設備上本身就支持創建快捷方式,在菜單上選擇“復制”,然后其他地方選擇“粘貼快捷方式”皆可。 可有時我們需要為用戶提供一種功能,讓用戶可以自己選擇是否在開機時啟動,這是就需要我們開發人員為其提供操作了。
當然,在.NET CF 上為WM創建快捷方式是件很容易的事情。這里提供兩種方式:
方法一: 通過P/Inovke調用系統API ?- ?SHCreateShortcut或SHCreateShortcutEx Code
DWORD?WINAPI?SHCreateShortcut(
??LPTSTR?szShortcut,????//?快捷方式路徑,非空
??LPTSTR?szTarget???????//?需要被創建快捷方式的路徑,可以包括路徑和參數
);
和
DWORD?WINAPI?SHCreateShortcutEx(
??LPTSTR?lpszDir,???????//?快捷方式路徑,非空
??LPTSTR?lpszTarget,????//?需要被創建快捷方式的路徑,可以包括路徑和參數
??LPTSTR?szShortcut,????//?返回唯一快捷方式名,?如果不想返回設置為NULL
??LPDWORD?lpcbShortcut??//?快捷方式允許的最大長度。如果快捷方式名小于該長度,則返回正確長度。如果不想返回則設置為NULL
);
BOOL?SHCreateShortcutExample()
{
????//?Create?a?shortcut?called?myAppShortcut.lnk,?
????//?that?links?to?the?target?file?in?\Windows\Program?Files,?named?myApp.exe.
????//?Place?the?shortcut?in?the?folder?\Windows.
????return?SHCreateShortcut(TEXT("\\Windows\\myAppShortcut.lnk"),?TEXT("\\Windows\\Program?Files\\myApp.exe"));
}
BOOL?SHCreateShortcutExExample()
{
????//?Create?a?shortcut?to?the?file?\Windows\Program?Files\myApp.exe
????//?in?\Windows\myPath,?with?a?maximum?allowable?shortcut?name?length?of?64.
????//?If?successful,?myAppShortcut?will?contain?the?name?of?the?shortcut.
????DWORD?maxLen?????????=?64;
????LPTSTR?myAppShortcut?=?new?TCHAR[maxLen?+?1];
????return?SHCreateShortcutEx(TEXT("\\Windows\\MyPath"),?
??????????????????????????????TEXT("\\Windows\\Program?Files\\myApp.exe"),
??????????????????????????????myAppShortcut,
??????????????????????????????&maxLen);
}
.NET CF c# 調用
????????[DllImport("coredll.dll",?EntryPoint?=?"SHCreateShortcut")]
????????private?static?extern?bool?SHCreateShortcut(string?shortcut,?string?target);
????????private?void?Btn_CreateShortCut_Click(object?sender,?EventArgs?e)
????????{
????????????SHCreateShortcut(@"\Windows\StartUp\"?+?GetApplicationName()?+?".lnk",
????????????????"\""?+?GetApplicationFullName()?+?"\"");
????????}
方法二: 打開一個WM上的后綴名為.lnk的文件,查看其中的格式,如下: {目標路徑包含字符數}#"{目標路徑和命令}" 48#"\Program Files\CreateShortCut\CreateShortCut.exe" 說明: 如果目標路徑包含空格,則要用2個引號把路徑包起來,當然推薦是在任何時候都是用2個引號把路徑包含進來。您可以去掉引號試試! 我們可以按照該格式來定義自己的快捷方式函數: Code
????????///?<summary>
????????///?創建進程快捷方式
????????///?說明:?需要注意該函數和系統提供API在target參數輸入的不同。如果target中含有空格符,
????????///?那么需要在路徑外使用2個引號""將整個路徑個包含。
????????///?</summary>
????????///?<param?name="shortcut">快捷方式路徑</param>
????????///?<param?name="arguments">參數</param>
????????///?<param?name="target">需要被創建快捷方式的文件</param>
????????///?<returns>true?or?false</returns>
????????public?bool?myCreateShortCut(string?shortcut,?string?arguments,?string?target)
????????{
????????????FileStream?fs?=?null;
????????????try
????????????{
????????????????bool?bQuoted?=?false;
????????????????target?=?target.Trim();
????????????????//?檢查字符串中是否還有空格
????????????????if?(target.IndexOf('?')?>?-1)
????????????????????bQuoted?=?true;
????????????????int?len?=?target.Length;
????????????????string?link?=?"";
????????????????//?有空格,則在路徑前后添加引號
????????????????if?(bQuoted)
????????????????????link?=?"\""?+?target?+?"\"";
????????????????
????????????????//?判斷參數是否為空
????????????????if?(!string.IsNullOrEmpty(arguments))
????????????????{
????????????????????link?+=?("?"?+?arguments);
????????????????????//?記得要加上路徑和參數中間的空格
????????????????????len?+=?(arguments.Length?+?1);
????????????????}
????????????????//?寫入信息
?? ? ? ? ? ? ? ?fs?=?new?FileStream(shortcut,?FileMode.Create,?FileAccess.Write,FileShare.ReadWrite);
????????????????if?(File.Exists(shortcut))
????????????????{
????????????????????using?(StreamWriter?sw?=?new?StreamWriter(fs))
????????????????????{
????????????????????????sw.WriteLine(len.ToString()?+?"#"?+?link);
????????????????????????sw.Close();
????????????????????????fs.Close();
????????????????????????return?true;
????????????????????}
????????????????}
????????????????fs.Close();
????????????????return?false;
????????????}
????????????catch
????????????{
????????????????fs.Close();
????????????????return?false;
????????????}
????????}
????????//?調用,注意與方法一的不同
????????private?void?Btn_MyCreateShortCut_Click(object?sender,?EventArgs?e)
????????{
????????????myCreateShortCut(@"\Windows\StartUp\"?+?GetApplicationName()?+?".lnk",
????????????????"",
????????????????GetApplicationFullName());
?? ? ? ?}
好了,所有工作完成! 如下截圖
-------------------- 例子下載: CreateShortCut.rar
--------------------------------------------------
李森?– listen
E-mail:??lisencool@gmail.com
聲明:
這里集中了在WinCE和Windows Mobile開發中的一些基本常識。我很樂意和大家分享,也希望大家提出意見,并給我投稿,我會第一時間替您發表并署上您的大名!
Announce:
Here collects general knowledge on WinCE and Windows mobile. I 'm very glad to share them with all friends, and also hope you can share your problems and opinions and contribute articles to me to share with others. I'll publish your articles and sign your name at the first time.
轉載于:https://www.cnblogs.com/Lisen/archive/2009/08/13/1544917.html
總結
以上是生活随笔為你收集整理的.NET CF WM上创建快捷方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 表分区[三]
- 下一篇: iPhone开发环境搭建For PC