C #: получение имени папки при нажатии на нее правой кнопкой мыши - PullRequest
1 голос
/ 11 мая 2011

Я разрабатываю приложение для Windows, мне нужно получить имя папки, щелкнув правой кнопкой мыши по папке, чтобы выполнить некоторые операции с ней.

Пока я сделал следующее:

  1. Сделал раздел реестра в HKKEY_CLASS_ROOT \ Folder \ shell \ (имя моей программы)
  2. Сделал раздел реестра с именем моей программы \ command [путь к моей программе]

теперь я сделал ключ реестра для отображения в контекстном меню папки. И в своем заявлении я сделал следующее:

1- в программе.cs

    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form1 p = new Form1();
        if (args.Length > 0)
        {
            p.pathkey = args[0];
        }
        Application.Run(p);
    }

2- в моей форме1:

    private string _pathkey;
    public string pathkey
    {
        get { return _pathkey; }
        set { _pathkey = value; }
    }

    private void Form1_Load(object sender, EventArgs e)
    { 
        if (this.pathkey != null)
        {
           textBox1.Text=pathkey;
        }
    }

наконец:

теперь, когда я щелкаю правой кнопкой мыши по папке, скажем, например, под названием NEW. тогда textbox3.text = C: \ NEW, пока все работает нормально, но если имя папки - Новая папка, тогда textbox3.text = C: \ New только не C: \ New Folder, и это моя проблема, если args.length> 0 отображается только длина 0, а не полный путь.

1 Ответ

1 голос
/ 11 мая 2011

Вам нужно поставить %0 в реестре в кавычках, чтобы весь путь обрабатывался как один аргумент.
В противном случае пробелы рассматриваются как разделители аргументов.

Вы также можете вызвать String.Join(" ", args), чтобы вручную рекомбинировать все аргументы, но первый способ лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...