|
|
@@ -3,6 +3,7 @@ using Microsoft.Win32; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Diagnostics; |
|
|
|
using System.IO; |
|
|
|
using System.Linq; |
|
|
|
using System.Runtime.InteropServices; |
|
|
|
using System.Text; |
|
|
@@ -33,67 +34,63 @@ namespace BeDesignerSCADA.Helper |
|
|
|
/// 创建桌面快捷方式 |
|
|
|
/// </summary> |
|
|
|
/// <returns>成功或失败</returns> |
|
|
|
public bool CreateDesktopShortcut() |
|
|
|
public void CreateShortcutOnDesktop() |
|
|
|
{ |
|
|
|
//1、在COM对象中找到 Windows Script Host Object Model |
|
|
|
//2、添加引用 using IWshRuntimeLibrary; |
|
|
|
string deskTop = string.Empty; |
|
|
|
try |
|
|
|
//添加引用 (com->Windows Script Host Object Model),using IWshRuntimeLibrary; |
|
|
|
String shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), $"{AppDomain.CurrentDomain.FriendlyName}.lnk"); |
|
|
|
if (!System.IO.File.Exists(shortcutPath)) |
|
|
|
{ |
|
|
|
deskTop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\"; |
|
|
|
if (System.IO.File.Exists(deskTop + GetApplicationName + ".lnk")) // |
|
|
|
// 获取当前应用程序目录地址 |
|
|
|
String exePath = Process.GetCurrentProcess().MainModule.FileName; |
|
|
|
IWshShell shell = new WshShell(); |
|
|
|
// 确定是否已经创建的快捷键被改名了 |
|
|
|
foreach (var item in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "*.lnk")) |
|
|
|
{ |
|
|
|
return true; |
|
|
|
WshShortcut tempShortcut = (WshShortcut)shell.CreateShortcut(item); |
|
|
|
if (tempShortcut.TargetPath == exePath) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
WshShell shell = new WshShell(); |
|
|
|
//快捷键方式创建的位置、名称 |
|
|
|
IWshShortcut shortcut = shell.CreateShortcut(deskTop + GetApplicationName + ".lnk") as IWshShortcut; |
|
|
|
shortcut.TargetPath = GetApplicationPath; //目标文件 |
|
|
|
//该属性指定应用程序的工作目录,当用户没有指定一个具体的目录时,快捷方式的目标应用程序将使用该属性所指定的目录来装载或保存文件。 |
|
|
|
shortcut.WorkingDirectory = System.Environment.CurrentDirectory; |
|
|
|
shortcut.WindowStyle = 1; //目标应用程序的窗口状态分为普通、最大化、最小化【1,3,7】 |
|
|
|
shortcut.Description = GetApplicationName; //描述 |
|
|
|
//shortcut.IconLocation = exePath + "\\logo.ico"; //快捷方式图标 |
|
|
|
shortcut.Arguments = ""; |
|
|
|
//shortcut.Hotkey = "CTRL+ALT+F11"; // 快捷键 |
|
|
|
shortcut.Save(); //必须调用保存快捷才成创建成功 |
|
|
|
return true; |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
return false; |
|
|
|
WshShortcut shortcut = (WshShortcut)shell.CreateShortcut(shortcutPath); |
|
|
|
shortcut.TargetPath = exePath; |
|
|
|
shortcut.Arguments = "";// 参数 |
|
|
|
shortcut.Description = AppDomain.CurrentDomain.FriendlyName; |
|
|
|
shortcut.WorkingDirectory = Environment.CurrentDirectory;//程序所在文件夹,在快捷方式图标点击右键可以看到此属性 |
|
|
|
shortcut.IconLocation = exePath;//图标,该图标是应用程序的资源文件 |
|
|
|
//shortcut.Hotkey = "CTRL+SHIFT+W";//热键,发现没作用,大概需要注册一下 |
|
|
|
shortcut.WindowStyle = 1; |
|
|
|
shortcut.Save(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public bool CreateDesktopShortcut(string Name) |
|
|
|
public void CreateShortcutOnDesktop(string Name) |
|
|
|
{ |
|
|
|
//1、在COM对象中找到 Windows Script Host Object Model |
|
|
|
//2、添加引用 using IWshRuntimeLibrary; |
|
|
|
string deskTop = string.Empty; |
|
|
|
try |
|
|
|
//添加引用 (com->Windows Script Host Object Model),using IWshRuntimeLibrary; |
|
|
|
String shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), $"{Name}.lnk"); |
|
|
|
if (!System.IO.File.Exists(shortcutPath)) |
|
|
|
{ |
|
|
|
deskTop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\"; |
|
|
|
if (System.IO.File.Exists(deskTop + Name + ".lnk")) // |
|
|
|
// 获取当前应用程序目录地址 |
|
|
|
String exePath = $"{AppDomain.CurrentDomain.BaseDirectory}{Name}.exe";// Process.GetCurrentProcess().MainModule.FileName; |
|
|
|
IWshShell shell = new WshShell(); |
|
|
|
// 确定是否已经创建的快捷键被改名了 |
|
|
|
foreach (var item in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "*.lnk")) |
|
|
|
{ |
|
|
|
return true; |
|
|
|
WshShortcut tempShortcut = (WshShortcut)shell.CreateShortcut(item); |
|
|
|
if (tempShortcut.TargetPath == exePath) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
WshShell shell = new WshShell(); |
|
|
|
//快捷键方式创建的位置、名称 |
|
|
|
IWshShortcut shortcut = shell.CreateShortcut(deskTop + Name + ".lnk") as IWshShortcut; |
|
|
|
shortcut.TargetPath = GetApplicationPath; //目标文件 |
|
|
|
//该属性指定应用程序的工作目录,当用户没有指定一个具体的目录时,快捷方式的目标应用程序将使用该属性所指定的目录来装载或保存文件。 |
|
|
|
shortcut.WorkingDirectory = System.Environment.CurrentDirectory; |
|
|
|
shortcut.WindowStyle = 1; //目标应用程序的窗口状态分为普通、最大化、最小化【1,3,7】 |
|
|
|
shortcut.Description = Name; //描述 |
|
|
|
//shortcut.IconLocation = exePath + "\\logo.ico"; //快捷方式图标 |
|
|
|
shortcut.Arguments = ""; |
|
|
|
//shortcut.Hotkey = "CTRL+ALT+F11"; // 快捷键 |
|
|
|
shortcut.Save(); //必须调用保存快捷才成创建成功 |
|
|
|
return true; |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
return false; |
|
|
|
WshShortcut shortcut = (WshShortcut)shell.CreateShortcut(shortcutPath); |
|
|
|
shortcut.TargetPath = exePath; |
|
|
|
shortcut.Arguments = "";// 参数 |
|
|
|
shortcut.Description = AppDomain.CurrentDomain.FriendlyName; |
|
|
|
shortcut.WorkingDirectory = Environment.CurrentDirectory;//程序所在文件夹,在快捷方式图标点击右键可以看到此属性 |
|
|
|
shortcut.IconLocation = exePath;//图标,该图标是应用程序的资源文件 |
|
|
|
//shortcut.Hotkey = "CTRL+SHIFT+W";//热键,发现没作用,大概需要注册一下 |
|
|
|
shortcut.WindowStyle = 1; |
|
|
|
shortcut.Save(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|