C# 快捷方式路径修改

4
我创建了一个程序,使用某个库通过打开文件对话框生成到特定EXE的快捷方式。我已经让它工作了,但是我希望程序在目标路径后添加参数使其变成这样:"E:\Cod4\iw3mp.exe" +Seta Map mp_crash。 我应该怎样做才能在"标记之后添加+ Seta Map mp_Crash部分而不会删除或破坏.exe的扩展名呢?
以下是我编写的代码块以添加该参数:
label1.Text = openFileDialog1.FileName;

shortcut.TargetPath = label1.Text + " Seta Map mp_crash";

shortcut.Save();

这段代码将把“seta”部分添加到目标中,但会破坏扩展名,并且看起来像这样:"E:\Cod4\iw3mp.exe Seta Map mp_crash "

请帮忙。 以下是完整的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using IWshRuntimeLibrary;
using System.IO;

namespace WindowsFormsApplication18

{
    public partial class Form1 : Form

    {


        public Form1()

        {

            InitializeComponent( 
            );

        }
        public void CreateShortcut()
        {

            object shDesktop = (object)"Desktop";
            WshShell shell = new WshShell();
            string shortcutAddress = (string)shell.SpecialFolders.Item(ref shDesktop) + @"\Server.lnk";
            IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
            shortcut.Description = "Server Shortcut";
            shortcut.Hotkey = "Ctrl+Shift+N";
            var ofd = new OpenFileDialog();
            ofd.ShowDialog();
            shortcut.TargetPath = '"' + ofd.FileName + '"' + "+Seta Map mp_crash";
        }

        private void button1_Click(object sender, EventArgs e)
        {

            CreateShortcut();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
          //  var ofd = new OpenFileDialog();
         //   ofd.ShowDialog();
        //    string shortcut = '"' + ofd.FileName + '"' + "+Seta Map mp_crash";
         //   openFileDialog1.DefaultExt = "EXE";
      //  / //  openFileDialog1.FileName = "Iw3mp.exe";
         //  DialogResult result2 = openFileDialog1.ShowDialog();
       //   label1.Text = openFileDialog1.FileName;
       //   a = label1.Text;

        //    if (result2 == DialogResult.OK) 
        //   {
        //    }
        }
    }
}
3个回答

5
根据你更新的问题,试着这样做。
shortcut.TargetPath = ofd.FileName;
shortcut.Arguments = "Seta Map mp_crash";

发生了未处理的异常类型“System.ArgumentException”在WindowsFormsApplication18.exe中。额外信息:值不在预期范围内。 - VoVb
哪一行代码抛出了错误?上面的代码只是返回一个带有引号的字符串,其中包含label1.Text的值和命令行开关。你可以在{1}之前添加一个-来分隔参数。 - keyboardP
快捷方式目标路径行 - VoVb
不客气 :) 请在左边选择复选标记将此线程标记为已回答。 - keyboardP
谢谢,我之前不知道如何选择最佳答案:D - VoVb
没问题!这个论坛与其他很多论坛略有不同,但我认为它运作得很好 :) - keyboardP

1
这是您想要做的吗?
        var ofd = new OpenFileDialog();
        ofd.ShowDialog();
        string shortcut = '"' + ofd.FileName + '"' + " +Seta Map mp_crash";

那应该按照你想要的格式对字符串进行格式化...

发生了同样的错误:在WindowsFormsApplication18.exe中发生了未处理的System.ArgumentException类型异常。附加信息:值不在预期范围内。 - VoVb

1
感谢大家花时间去发现我无法完成的事情,特别感谢KeyboardP和他的工作代码,谢谢。
shortcut.TargetPath = ofd.FileName;
shortcut.Arguments = "Seta Map mp_crash";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接