创建快捷方式 运行模式 用C#实现以下功能:怎么创建一个软件的快捷方式。我做了个应用平台,并且在该平台上有很多应用软件的快捷方式,我想在用户运行某个软件时,是弹出式运行,不知道该怎么实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://allenlooplee.cnblogs.com/archive/2005/09/01/228264.html http://soft.yesky.com/213/2098713.shtml 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(); } } } LS的都贴了老长的代码 那我就UP一下吧 求问 winform中嵌入Autodesk Express Viewer显示dwf问题 对连接字符串加密后,login就登陆不了了 关于截取部分图片的问题 c# 如何上手 怎样判断 shift+(小键盘)数字? C#C++读取文件 关于传图片问题,急! 水晶报表研究 在TextBox中不能输入"空格",如何实现? smtp问题 求写一正则表达式。 基础不牢靠啊 大家指点一下
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();
}
}
}