Откройте папку с помощью Process.Start

Другая опция состоит в том, чтобы использовать ключевое слово

public void DoSomething(params object[] theObjects)
{
  foreach(object o in theObjects)
  {
    // Something with the Objects…
  }
}

параметрических усилителей, Названное как...

DoSomething(this, that, theOther);
140
задан Palec 6 December 2016 в 19:31
поделиться

9 ответов

Удостоверились ли вы, что папка « c: \ teste » существует? Если этого не произойдет, откроется проводник, в котором отображается какая-то папка по умолчанию (в моем случае « C: \ Users \ [имя пользователя] \ Documents »).

Обновление

Я пробовал следующее варианты:

// opens the folder in explorer
Process.Start(@"c:\temp");
// opens the folder in explorer
Process.Start("explorer.exe", @"c:\temp");
// throws exception
Process.Start(@"c:\does_not_exist");
// opens explorer, showing some other folder)
Process.Start("explorer.exe", @"c:\does_not_exist");

Если ни один из них (ну, кроме того, который вызывает исключение) не работает на вашем компьютере, я не Не думаю, что проблема в коде, а в среде. В этом случае я бы попробовал одно (или оба) из следующего:

  • Откройте диалоговое окно «Выполнить», введите «explorer.exe» и нажмите Enter.
  • Откройте командную строку, введите «explorer.exe» и нажмите ввод
242
ответ дан 23 November 2019 в 23:14
поделиться

Для полноты картины, если все, что вы хотите сделать, это открыть папку, используйте следующее:

System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() {
    FileName = "C:\\teste\\",
    UseShellExecute = true,
    Verb = "open"
});

Убедитесь, что имя файла заканчивается на Path.DirectorySeparatorChar , чтобы он однозначно указывал на папку. (Спасибо @binki.)

Это решение победило '

43
ответ дан 23 November 2019 в 23:14
поделиться

Вам не нужна двойная обратная косая черта при использовании неэкранированных строк:

System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
4
ответ дан 23 November 2019 в 23:14
поделиться

Вы используете символ @, который устраняет необходимость в экранировании обратной косой черты.

Удалите @ или замените \\ на \

5
ответ дан 23 November 2019 в 23:14
поделиться

Используйте перегруженную версию метода, которая принимает экземпляр ProcessStartInfo и задает для свойства ProcessWindowStyle значение, которое подходит вам.

1
ответ дан 23 November 2019 в 23:14
поделиться

Странно.

Если он не может найти explorer.exe, вы должны получить исключение. Если он не может найти папку, он все равно должен открыть какую-то папку (например, мои документы)

Вы говорите, что в диспетчере задач появляется еще одна копия проводника, но вы ее не видите.

Возможно ли, что это открывается за пределами экрана (т.е. другой монитор)?

Или вы случайно делаете это в неинтерактивной службе?

0
ответ дан 23 November 2019 в 23:14
поделиться

Правильно ли открывается, когда вы запускаете "explorer.exe c: \ teste" из меню "Пуск"? Как долго вы это пытаетесь? Я наблюдаю подобное поведение, когда на моем компьютере много процессов, и когда я открываю новый процесс (например, IE) ... он запускается в диспетчере задач, но не отображается в интерфейсе пользователя. Вы пробовали перезапуск?

Следующий код должен открыть новый экземпляр проводника

class sample{

static void Main()
{
  System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
}
}
0
ответ дан 23 November 2019 в 23:14
поделиться

У вас много запущенных приложений, когда вы пытаетесь это сделать? Иногда я сталкиваюсь со странным поведением на работе, потому что в моей системе заканчиваются дескрипторы GDI, так как у меня открыто очень много окон (наши приложения используют много).

Когда это происходит, окна и контекстные меню больше не появляются, пока я не закрою что-то, чтобы освободить некоторые дескрипторы GDI.

Ограничение по умолчанию в XP и Vista - 10000. Для моей DevStudio не редкость иметь 1500 дескрипторов GDI, поэтому, если у вас есть пара открытых копий Dev studio, она может съесть их довольно быстро. Вы можете добавить столбец в TaskManager, чтобы увидеть, сколько дескрипторов используется каждым процессом.

Есть настройка реестра, которую вы можете сделать, чтобы увеличить лимит.

Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/ms724291 (VS.85) .aspx

0
ответ дан 23 November 2019 в 23:14
поделиться

Вы избегаете обратной косой черты, когда знак at делает это за вас. .

System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
0
ответ дан 23 November 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: