Другая опция состоит в том, чтобы использовать ключевое слово
public void DoSomething(params object[] theObjects)
{
foreach(object o in theObjects)
{
// Something with the Objects…
}
}
параметрических усилителей, Названное как...
DoSomething(this, that, theOther);
Удостоверились ли вы, что папка « 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");
Если ни один из них (ну, кроме того, который вызывает исключение) не работает на вашем компьютере, я не Не думаю, что проблема в коде, а в среде. В этом случае я бы попробовал одно (или оба) из следующего:
Для полноты картины, если все, что вы хотите сделать, это открыть папку, используйте следующее:
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() {
FileName = "C:\\teste\\",
UseShellExecute = true,
Verb = "open"
});
Убедитесь, что имя файла заканчивается на Path.DirectorySeparatorChar
, чтобы он однозначно указывал на папку. (Спасибо @binki.)
Это решение победило '
Вам не нужна двойная обратная косая черта при использовании неэкранированных строк:
System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
Вы используете символ @, который устраняет необходимость в экранировании обратной косой черты.
Удалите @ или замените \\ на \
Используйте перегруженную версию метода, которая принимает экземпляр ProcessStartInfo и задает для свойства ProcessWindowStyle значение, которое подходит вам.
Странно.
Если он не может найти explorer.exe, вы должны получить исключение. Если он не может найти папку, он все равно должен открыть какую-то папку (например, мои документы)
Вы говорите, что в диспетчере задач появляется еще одна копия проводника, но вы ее не видите.
Возможно ли, что это открывается за пределами экрана (т.е. другой монитор)?
Или вы случайно делаете это в неинтерактивной службе?
Правильно ли открывается, когда вы запускаете "explorer.exe c: \ teste" из меню "Пуск"? Как долго вы это пытаетесь? Я наблюдаю подобное поведение, когда на моем компьютере много процессов, и когда я открываю новый процесс (например, IE) ... он запускается в диспетчере задач, но не отображается в интерфейсе пользователя. Вы пробовали перезапуск?
Следующий код должен открыть новый экземпляр проводника
class sample{
static void Main()
{
System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
}
}
У вас много запущенных приложений, когда вы пытаетесь это сделать? Иногда я сталкиваюсь со странным поведением на работе, потому что в моей системе заканчиваются дескрипторы GDI, так как у меня открыто очень много окон (наши приложения используют много).
Когда это происходит, окна и контекстные меню больше не появляются, пока я не закрою что-то, чтобы освободить некоторые дескрипторы GDI.
Ограничение по умолчанию в XP и Vista - 10000. Для моей DevStudio не редкость иметь 1500 дескрипторов GDI, поэтому, если у вас есть пара открытых копий Dev studio, она может съесть их довольно быстро. Вы можете добавить столбец в TaskManager, чтобы увидеть, сколько дескрипторов используется каждым процессом.
Есть настройка реестра, которую вы можете сделать, чтобы увеличить лимит.
Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/ms724291 (VS.85) .aspx
Вы избегаете обратной косой черты, когда знак at делает это за вас. .
System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");