通过创建VBS,并执行,创建方式:
1.首先看一下VBS创建快捷方式的代码:
复制内容到剪贴板
代码:
'VBS实例
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop") '获得桌面目录
set oShellLink = WshShell.CreateShortcut(strDesktop & "\D4S.lnk") '快捷方式存放目录及名称
oShellLink.TargetPath = "X:\Program Files\XXX.exe" '指向的可执行文件
oShellLink.WindowStyle = 1 '运行方式(窗体打开的方式)
oShellLink.Hotkey = "CTRL+SHIFT+F" '快捷键
oShellLink.IconLocation = "X:\Program Files\XXX.exe, 0" '图标(同样可不指定)
oShellLink.Description = "ChinaDforce YanMang" '备注信息
oShellLink.WorkingDirectory = "X:\Program Files\" '起始目录
oShellLink.Save '保存快捷方式
2.那我们如何在C#中使用VBS呢?
方法我想应该有很多吧!
在这里介绍一种"最笨"但最直接的方法.
思路如下:
复制内容到剪贴板
代码:
>>> 生成VBS全部代码文本;
>>> 写入临时文件"temp.vbs";
>>> 用Process打开这个文件执行.
3.下面是C#中实现的关键代码:
复制内容到剪贴板
代码:
//生成VBS代码
string vbs = this.CreateVBS();
//以文件形式写入临时文件夹
this.WriteToTemp(vbs);
//调用Process执行
this.RunProcess();
复制内容到剪贴板
代码:
///
/// 创建VBS代码
///
///
private string CreateVBS()
{
string vbs = string.Empty;
vbs += ("set WshShell = WScript.CreateObject(\"WScript.Shell\")\r\n");
vbs += ("strDesktop = WshShell.SpecialFolders(\"Desktop\")\r\n");
vbs += ("set oShellLink = WshShell.CreateShortcut(strDesktop & \"\\D4S.lnk\")\r\n");
vbs += ("oShellLink.TargetPath = \"" + System.Reflection.Assembly.GetExecutingAssembly().Location + "\"\r\n");
vbs += ("oShellLink.WindowStyle = 1\r\n");
vbs += ("oShellLink.Description = \"ChinaDforce YanMang\"\r\n");
vbs += ("oShellLink.WorkingDirectory = \"" + System.Environment.CurrentDirectory + "\"\r\n");
vbs += ("oShellLink.Save");
return vbs;
}
复制内容到剪贴板
代码:
///
/// 写入临时文件
///
///
private void WriteToTemp(string vbs)
{
if (!string.IsNullOrEmpty(vbs))
{
//临时文件
string tempFile = Environment.GetFolderPath(Environment.SpecialFolder.Templates) + "\\temp.vbs";
//写入文件
FileStream fs = new FileStream(tempFile, FileMode.Create, FileAccess.Write);
try
{
//这里必须用UnicodeEncoding. 因为用UTF-8或ASCII会造成VBS乱码
System.Text.UnicodeEncoding uni = new UnicodeEncoding();
byte[] b = uni.GetBytes(vbs);
fs.Write(b, 0, b.Length);
fs.Flush();
fs.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "写入临时文件时出现错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
//释放资源
fs.Dispose();
}
}
}
复制内容到剪贴板
代码:
///
/// 执行VBS中的代码
///
private void RunProcess()
{
string tempFile = Environment.GetFolderPath(Environment.SpecialFolder.Templates) + "\\temp.vbs";
if (File.Exists(tempFile))
{
//执行VBS
Process.Start(tempFile);
}
}
当然不要忘了清理临时文件!哈哈
复制内容到剪贴板
代码:
private void btn退出_Click(object sender, EventArgs e)
{
Application.Exit();
//清除临时文件
File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Templates) + "\\temp.vbs");
}