创建快捷方式对于绝大多数 Windows 用户来说都是小菜一碟了,然而,这项工作却为程序员带来不少麻烦。.net 没有提供简便直接的创建快捷方式的方法,那么在 .NET 中我们如何为应用程序创建快捷方式呢?

  1. 快捷方式文件

  快捷方式实质上是一个扩展名为 .LNK 的文件。右击一个快捷方式文件并选择属性,跳到快捷方式选项卡,如图1所示:

你可以看到一个快捷方式包含如下数据:

  ·快捷方式的名字

  ·快捷方式所指向的目标所在的位置

  ·快捷方式所指向的目标的工作目录

  ·激活该快捷方式的热键

  ·快捷方式所指向的目标运行时的窗口风格(普通、最大化和最小化)

  ·该快捷方式的描述性文字

  ·快捷方式的图标所在的位置

  2. 使用 WSH 创建快捷方式

  2.1 添加 WSH 的引用

  这里我使用 Visual C# 2005 Express Edition Beta 2 来开发的,添加引用的方法非常简单,右击你的项目并选择添加引用,选择 COM 选项卡并选择 Windows Script Host Object Model,如图2所示:

2.2 创建你的快捷方式

  创建一个快捷方式的完整代码如下:


  首先,我们创建一个 WshShell 的实例对象,接着通过该对象的 CreateShortcut 方法来创建 IWshShortcut 接口的实例对象,传递给 CreateShortcut 方法的参数是将要创建的快捷方式的完整路径(包括该快捷方式的名字)。接下来,我们就要设置 IWshShortcut 实例对象的相关属性值了。

  2.3 设置快捷方式的属性

  2.3.1 TargetPath

  该属性仅用于设置或者读取快捷方式的目标所在的位置。Code #01 中,将要创建的快捷方式指向本应用程序。

  2.3.2 WorkingDirectory

  该属性指定应用程序的工作目录,当用户没有指定一个具体的目录时,快捷方式的目标应用程序将使用该属性所指定的目录来装载或保存文件。

  2.3.3 WindowStyle

  该属性指定快捷方式的目标应用程序的窗口为普通(原始)状态、最小化或者最大化。对比图1中 Run 下拉菜单的项,该属性的值及其意义如下:

Value Meaning
1 Normal window
3 Maximized
7 Minimized

  2.3.4 Description

  该属性设置用于设置或者读取快捷方式的附加说明。

  2.3.5 IconLocation

  该属性用于指定快捷方式的图表的所在位置,它的值包含一个完整的路径和一个索引值。Code #01 中,快捷方式的图标被设定为系统文件夹中的 Shell32.dll 文件所包含的第165个图标。

  2.4 生成快捷方式

  CreateShortcut 仅仅创建一个 IWshShortcut 的实例对象,它不会为你生成任何快捷方式,当一切就绪后,你必须调用 IWshShortcut.Save 方法才能生成快捷方式文件。

  3. 活用快捷方式简化操作

  想象一下你的应用程序支持命令行参数组合运行,例如:

App /out:output.txt /sortby:date /desc

  而你又希望只需要轻轻按下 CTRL+ALT+F11 就可以直接启动这项功能,这时你就需要用到 IWshShortcut 的 Arguments 和 Hotkey 两个属性了:

// Code #02

shortcut.Arguments = "/out:output.txt /sortby:date /desc";

shortcut.Hotkey = "CTRL+ALT+F11";


  注意:Hotkey 属性的值里面不能包含空格。

  你可以在应用程序里面像平常那样处理命令行参数:

// Code #03

 

class Program

{

    static void Main(string[] args)

    {

        foreach (string arg in args)

        {

            Console.WriteLine(arg);

        }

    }

}

 

// Output:

//

// /out:output.txt

// /sortby:date

// /desc

  现在,你把这个快捷方式放到桌面,每当你需要运行的时候,轻轻的按下 CTRL+ALT+F11 就行了,Cool ~ ~ ~

// Code #01

using System;

using IWshRuntimeLibrary;

class Program

{

static void Main(string[] args)

{

WshShell shell = new WshShell();

IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(

Environment.GetFoldERPath(Environment.SpecialFolder.DesktopDirectory) +

"//" + "Allen’s Application.lnk"

);

shortcut.TargetPath = System.Reflection.Assembly.GetExecutingAssembly().Location;

shortcut.WorkingDirectory = System.Environment.CurrentDirectory;

shortcut.WindowStyle = 1;

shortcut.Description = "Launch Allen’s Application";

shortcut.IconLocation = System.Environment.SystemDirectory + "//" + "shell32.dll, 165";

shortcut.Save();

}

}

 
 

用Visual C# 2005创建快捷方式相关推荐

  1. Visual Studio 2005 创建Windows服务程序(C#)

      1.新建项目 打开VS->文件->新建->项目->Visual C#->Windows->Windows服务->起个名儿->确定  (如图)   2 ...

  2. [转]Visual Studio 2005创建VC++智能设备项目失败的解决方法

    从别的地方转载的,原文http://blog.myspace.cn/e/401633788.htm If you've tried to create a smart device Win32 pro ...

  3. Visual Studio 2005 IDE 技巧和窍门

    发布日期: 2007-02-26 | 更新日期: 2007-02-26 James Lau Microsoft 项目经理 适用于: Microsoft Visual Studio 2005 摘要:Vi ...

  4. Visual Studio 2005详细讲解!

    本C#项目案例主要是使用Visual Studio 2005创建C++和C#混合项目的方法,涉及C#智能设备项目和C++智能设备项目. 通过P/Invoke我们可以充分利用已有的非托管资源,使用非托管 ...

  5. [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)

    原文地址:http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx[原文×××] [翻译]使用C#创建S ...

  6. WSSv3 Technical Articles_使用Visual Studio 2005扩展创建Windows SharePoint Services 3.0 Web Part...

    WSSv3 Technical Articles_使用Visual Studio 2005扩展创建Windows SharePoint Services 3.0 Web Part 摘要:学习使用Mic ...

  7. Visual Studio 2005/2008的代码段编辑器

    代码段(Snippet)是可以从键盘上快速访问的代码模版.它不是代码生成器,而是一些面向常用编码模式的快捷方式.它支持字段链接,因此当修改某一处参数名称的时候就会同时更新整个代码块.另外,代码段还会自 ...

  8. Using NUnit with Visual Studio 2005 Express Editions

    允许通过Build Toolbar选择"Debug" or "Relese"设置 "工具" -> "选项..." ...

  9. Visual studio 2005如何实现源码管理

    转自CSDN Visual studio 2005如何实现源码管理(Visual Studio .Net团队开发) 目录: 〇. 摘要 一. 开发前的准备 二. 创建空的SourceSafe数据库 三 ...

最新文章

  1. 分库分表 vs NewSQL数据库
  2. vs2008 试用版评估期结束的解决方法(2009-08-
  3. imdb导mysql_keras如何导入本地下载的imdb数据集?
  4. python logging模块之handlers的使用教程
  5. java 文件指定位置插入_java 中利用io流将一个文件插入到另一个文件中的指定位置,指定位置...
  6. 你......真的了解我吗?
  7. C++中的类加多线程代码修炼
  8. 在GoogPlay上发布的包Facebook登录失败提示签名问题
  9. python一行输出多个数据_Python高效数据分析的8个技巧
  10. Notable magic numbers
  11. 方法和函数有什么区别?
  12. QT_QTableWidget增删改读
  13. google aviator:Java逻辑公式引擎
  14. 简单易用的OKR工具——源目标OKR
  15. 怎么退出python
  16. Java学习笔记(图片)
  17. PayPal轮询收款的那些事儿
  18. nCode:GlyphWorks案例教程二
  19. U盘启动制作教程/实例 新手制作启动盘必看! [20081120]
  20. Android dev tips(update at 2015-11-26)

热门文章

  1. 手机显示无法接通服务器是怎么回事,手机暂时无法接通是什么原因 可能处于飞行模式...
  2. mysql s1009_mysql 学习笔记
  3. matlab 导入/制作/导出 STK .tle卫星文件/数据(直接/间接,好几种方法)
  4. RERAN:安卓系统的定时和点击的录制和回放——(2)
  5. 各种素材网站大全【全部倾倒,福利倒计时-JS,HTML,游戏素材,UI,图片素材等
  6. 音高修正,对齐软件Synchro Arts 黑五促销
  7. matlab has encountered,matlab崩溃,matlab has encountered an internal problem needs to close
  8. 智慧消防三维预案辅助决策系统
  9. (博弈论)一行代码就能解决的智力题
  10. 1116 任意次方后的最后三位(1)