2013-08-28 2 views
4

Я создал программу, которая генерирует ярлык для конкретного EXE, выбранного в диалоговом окне открытого файла, используя некоторую библиотеку. Я получил его для работы, но я хочу, чтобы программа добавила параметр в целевой путь, чтобы он выглядел следующим образом: ("E:\Cod4\iw3mp.exe" +Seta Map mp_crash). Что я могу сделать, чтобы добавить часть (+ Seta Map mp_Crash) после отметки ", не удаляя ее или не разрушая расширение .exe?C# ShortCut Path Modification

Вот блок кода, который я написал, чтобы добавить параметр:

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) 
     // { 
     // } 
     } 
    } 
} 

ответ

4

на основе обновленной вопрос, попробуйте это

shortcut.TargetPath = ofd.FileName; 
shortcut.Arguments = "Seta Map mp_crash"; 
+0

Необработанное исключение типа «System.ArgumentException» произошло в WindowsFormsApplication18.exe Дополнительная информация: Значение не входит в ожидаемый диапазон. – VoVb

+0

Какая строка порождает эту ошибку? Вышеприведенный код возвращает строку с метками кавычек вокруг значения 'label1.Text' и ключа командной строки. Вы можете добавить '-' перед символом' {1} ', чтобы разграничить аргумент. – keyboardP

+0

строка shortcut.targetpath – VoVb

1

ли это то, что вы пытаетесь сделать?

 var ofd = new OpenFileDialog(); 
     ofd.ShowDialog(); 
     string shortcut = '"' + ofd.FileName + '"' + " +Seta Map mp_crash"; 

, который должен форматировать строку, как вы хотите его ...

+0

такая же ошибка В WindowsFormsApplication18.exe произошло необработанное исключение типа «System.ArgumentException» Дополнительная информация: Значение не входит в ожидаемый диапазон – VoVb

1

спасибо каждому за тратить время, чтобы узнать, что я не мог особенно KeyboardP и его рабочий код, спасибо

shortcut.TargetPath = ofd.FileName; 
shortcut.Arguments = "Seta Map mp_crash";