Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для Rhoxolan
13 / 13 / 7
Регистрация: 16.12.2020
Сообщений: 247
.NET 6

Не работает System.Diagnostics.Process.Start();

27.05.2022, 11:59. Показов 4371. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте! Нужно, чтобы по двойному клику на лейбл открывалась страница в браузере. Нашел на Microsoft Docs следующий пример кода и скопировал его себе в обработчик:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string target= "http://www.microsoft.com";
try
{
    System.Diagnostics.Process.Start(target);
}
catch (System.ComponentModel.Win32Exception noBrowser)
{
    if (noBrowser.ErrorCode==-2147467259)
    MessageBox.Show(noBrowser.Message);
}
catch (System.Exception other)
{
    MessageBox.Show(other.Message);
}
Пишет: An error occured trying to start process "http://www.microsoft.com" with working directory. 'проект\bin\Debug\net6.0-windows'. Не удаётся найти указанный файл.
Пишу на платформе NET 6.0. В чем может быть проблема и как её решить?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2022, 11:59
Ответы с готовыми решениями:

Не работает System.Diagnostics.Process.Start
Подскажите почему button2 не работает? Почему System.Diagnostics.Process.Start не читает string? public partial class Form1 : Form ...

Как проследить событие закрытие созданного мной System.Diagnostics.Process.Start("explorer", путь)?
Как проследить событие закрытие созданного мной System.Diagnostics.Process.Start("explorer", путь)?

Не работает Process.Start()!
Здравствуйте,форумчане! Наткнулся на проблему Не запускается exe файл Вот код: Process.Start(Application.StartupPath +...

3
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
27.05.2022, 13:00
Лучший ответ Сообщение было отмечено Rhoxolan как решение

Решение

https://docs.microsoft.com/en-... ellexecute
1
 Аватар для Rhoxolan
13 / 13 / 7
Регистрация: 16.12.2020
Сообщений: 247
27.05.2022, 18:02  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
https://docs.microsoft.com/en-... ellexecute
Спасибо, получилось, работает. Написал такой костыль:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
try
            {
                using (Process process = new())
                {
                    process.StartInfo.UseShellExecute = true;
                    process.StartInfo.FileName = "http://www.google.com";
                    process.Start();
                }
            }
            catch (Win32Exception noBrowser)
            {
                if (noBrowser.ErrorCode == -2147467259)
                {
                    MessageBox.Show(noBrowser.Message);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
Но у меня осталось пару вопросов.

Зачем нужен класс Process - я еще не изучал и написал код чисто интуитивно. Пугает строчка в той документации, которую вы скинули, о том, что замена значения StartInfo.UseShellExecute на true приведёт к замедлению запуска программы. Но, как я понимаю, я ж создаю новый отдельный объект класса Process, более того, упаковываю его в using - как я понимаю, таким образом я точно не нарушу чего-либо важного?

Второй вопрос - хотел еще уточнить про правильное использование try catch в этом примере. В примере Microsoft Docs дается пример использования сообщения от класса Win32Exception:
C#
1
2
3
4
5
6
7
catch (Win32Exception noBrowser)
            {
                if (noBrowser.ErrorCode == -2147467259)
                {
                    MessageBox.Show(noBrowser.Message);
                }
            }
Конечно, у меня нет поводов не доверять Microsoft, но правильный ли это пример? Почему код должен быть -2147467259? Это минимальное значение int, а если разрядность системы будет другая? Не проще ли написать просто:
C#
1
2
3
4
catch (Win32Exception noBrowser)
            {
                MessageBox.Show(noBrowser.Message);
            }
Ведь сообщение об ошибке в любом случае отобразится через MessageBox. Более того, в примере от Microsoft в случае возникновения ошибки Win32Exception с другим кодом и вовсе не выведется ни одного сообщения, так как в таком случае блок catch ничего не выполнит.
0
Эксперт .NET
 Аватар для Usaga
14297 / 9382 / 1353
Регистрация: 21.01.2016
Сообщений: 35,370
28.05.2022, 05:47
Цитата Сообщение от Rhoxolan Посмотреть сообщение
catch (Win32Exception noBrowser)
            {
                if (noBrowser.ErrorCode == -2147467259)
                {
                    MessageBox.Show(noBrowser.Message);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
Это ахинея какая-то. Достаточно последнего блока catch. Первый блок либо выведет сообщение, как последний, либо молча проглотит ошибку.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2022, 05:47
Помогаю со студенческими работами здесь

Ругается на Process.Start
Есть такой кодик, но почему то ругается на эту часть Process.Start(open.FileName);пишет, что не существует в текущем контексте, не могу...

Запуск программы, проблема ! Process.Start();
Здравствуйте уважаемые форумчане! Сложилась проблема. Есть форма, на ней есть кнопка. Мне нужно с помощью этой кнопки запустить...

Process.Start c именем пользователя и пароля
Добрый день господа. Помогите разобраться в задаче. как войти в сетевую папку используя логин и пароль? private void...

Process.Start() Не запускает системные утилиты
Имеется путь до msconfig: C:\Windows\System32\msconfig.exe Битность: x64 Пытаюсь вызвать:...

Process.Start название коряной папки
Люди есть проблема мне нужно чтоб при нажатии кнопки запускался файл вот так Коряная папка/bin/file.exe я пробывал ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru