用C#实现以下功能:怎么创建一个软件的快捷方式。我做了个应用平台,并且在该平台上有很多应用软件的快捷方式,我想在用户运行某个软件时,是弹出式运行,不知道该怎么实现。

解决方案 »

  1.   

    http://allenlooplee.cnblogs.com/archive/2005/09/01/228264.html
      

  2.   

    http://soft.yesky.com/213/2098713.shtml
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using IWshRuntimeLibrary;
    using System.Windows.Forms;
    using System.IO;namespace NetworkHomestead
    {
        class Shortcut
        {
            [STAThread]
            static void Main()
            {
            }        /// <summary>
            /// 创建快捷方式
            /// </summary>
            /// <param name="sApplicationFile"></param>
            /// <param name="sOutPath"></param>
            public void create(string applicationFile, string outPath)
            {
                // 图标名称
                string sIconFileName = string.Empty;            // 图标输出路径
                string sIconFile = string.Empty;            // 读取图标名称
                FileInfo file = new FileInfo(applicationFile);
                sIconFileName = file.Name;
                sIconFileName = sIconFileName.Substring(0, sIconFileName.IndexOf("."));
               
                sIconFile = outPath.Substring(0, outPath.Length - 1);
                sIconFile = sIconFile.Substring(sIconFile.LastIndexOf("\\") + 1, sIconFile.Length - sIconFile.LastIndexOf("\\") - 1);            sIconFile = Configuration.getIconOutPath() + sIconFile + "\\";
                sIconFile = sIconFile + sIconFileName + ".ico";
                FileInfo fileInfo = new FileInfo(sIconFile);
                if (!fileInfo.Exists)
                {
                    // 读取图标
                    ExtractIcon.GetIcon(applicationFile, sIconFile, false);
                }            string sShortcutFile = outPath + Model.getFileName(applicationFile) + ".lnk";
                fileInfo = new FileInfo(sShortcutFile);
                if (fileInfo.Exists)
                {
                    return;
                }
                WshShell shell = new WshShell();
                IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(sShortcutFile);
                
                shortcut.TargetPath = applicationFile;
                shortcut.WorkingDirectory = System.Environment.CurrentDirectory;
                // 该属性指定快捷方式的目标应用程序的窗口为普通(原始)状态
                shortcut.WindowStyle = 1;
                // 该属性设置用于设置或者读取快捷方式的附加说明。
                shortcut.Description = "Launch Allen’s Application";
                // 该属性用于指定快捷方式的图表的所在位置,它的值包含一个完整的路径和一个索引值。
                shortcut.IconLocation = sIconFile;
                shortcut.Save();             
            }
        }
    }
    using System;
    using System.Runtime.InteropServices;
    using System.Drawing;
    using System.IO;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;namespace NetworkHomestead
    {
        class ExtractIcon
        {
            [DllImport("Shell32.dll")]
            private static extern int SHGetFileInfo(string pszPath,  uint dwFileAttributes,  out   SHFILEINFO psfi,  uint cbfileInfo,  SHGFI uFlags);
            
            [StructLayout(LayoutKind.Sequential)]
            private struct SHFILEINFO
            {
                public SHFILEINFO(bool b)
                {
                    hIcon = IntPtr.Zero; iIcon = 0; dwAttributes = 0; szDisplayName = string.Empty; szTypeName = string.Empty;
                }
                public IntPtr hIcon;
                public int iIcon;
                public uint dwAttributes;
                [MarshalAs(UnmanagedType.LPStr, SizeConst = 260)]
                public string szDisplayName;
                [MarshalAs(UnmanagedType.LPStr, SizeConst = 80)]
                public string szTypeName;
            };        private ExtractIcon()
            {
            }        private enum SHGFI
            {
                // 16x16还是:0x00000001
                // 32x32像素:0x00000000
                SmallIcon = 0x00000001,
                LargeIcon = 0x00000000,
                Icon = 0x00000100,
                DisplayName = 0x00000200,
                Typename = 0x00000400,
                SysIconIndex = 0x00004000,
                UseFileAttributes = 0x00000010
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sInputFile">path + fileName</param>
            /// <param name="sOutFile">path + fileName</param>
            /// <param name="bSmall"></param>
            /// <returns></returns>
            public static void GetIcon(string inputFile, string outFile, bool small)
            {
                SHFILEINFO info = new SHFILEINFO(true);
                int cbFileInfo = Marshal.SizeOf(info);
                SHGFI flags;
                if (small)
                {
                    flags = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;
                }
                else
                {
                    flags = SHGFI.Icon | SHGFI.LargeIcon | SHGFI.UseFileAttributes;
                }            SHGetFileInfo(inputFile, 256, out   info, (uint)cbFileInfo, flags);
                Icon icon = Icon.FromHandle(info.hIcon);
                SaveIcon(outFile, icon);
                icon.Clone();            
            }        /// <summary>
            /// 
            /// </summary>
            /// <param name="sFile"></param>
            /// <param name="icoDemo"></param>
            public static void SaveIcon(string file, Icon icoDemo)
            {
                StreamWriter streamWriter = new StreamWriter(file);
                Icon icon = icoDemo;
                icon.Save(streamWriter.BaseStream);
                icon.Clone();
                streamWriter.Close();
            }
        }  
    }
      

  4.   

    LS的都贴了老长的代码  那我就UP一下吧