Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 34

Закрытие процесса запущенного программой

09.07.2010, 21:01. Показов 5270. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникло 2 проблемки, собственно нужно запустить справку и при закрытии программы если справка открыта ее тоже закрыть, я делаю таким способом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Process pr;
        private void toolStripButton_Help_Click(object sender, EventArgs e)
        {
            try
            {
                pr = Process.Start(Application.StartupPath + @"\help.chm");
                
            }....
 
 
        private void Form_main_FormClosed(object sender, FormClosedEventArgs e)
        {
           pr.Close();
        }
Такой метод не работает

2я проблемка форма отказывается реагировать на нажатие клавиш
C#
1
2
3
4
5
6
7
        private void Form_main_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1)
            {
                Process.Start(Application.StartupPath + @"\help.chm");
            }
        }
При нажати клавиш клавы в функцию отладчик не заходит
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.07.2010, 21:01
Ответы с готовыми решениями:

Имя запущенного процесса
Здравствуйте. Хочу открыть файл. Делаю следующим образом: Process process = new Process(); process.StartInfo.FileName =...

Чтение памяти запущенного процесса
Уважаемые, подскажите, как и чем можно воспользоваться для чтения памяти запущенного процесса ? Насколько я понимаю,...

Определить ID запущенного из формы процесса
Здравствуйте. Такая ситуация: Я по кнопке на форме запускаю процесс и нужно в textbox вывести ID этого процесса. Но у меня выходит, что...

7
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
09.07.2010, 23:49
таки ж вы выходите за пределы программы. т.е. запускаете процесс, и он выполняется, он открывает справку. и все, процесс закончился. закрывать уже нечего, когда он открыл справку, процесс больше не существует.

окно справки висит среди окон ОС, оно не принадлежит процессу вашей программы. close() сработал бы только в момент открытия справки, если успеть.

я в этом не знаток, но вроде как надо как-то либо среди запущенных процессов ОС справку искать,либо среди открытых окон

Добавлено через 25 минут
смутно как-то описала)))
в общем, я имела в виду, что ваш pr завершился, а справку показывает уже другой процесс - отображения справки. ну как если бы вы вызвали файл 1.txt, он бы был в процессе notepad.exe
1
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.07.2010, 00:51
Terion, pr один и он не завершился, нет никакого доп процесса для отображения справки, все выполняется в одном процессе (pr в данном случае). Просто метод Close() посылает запрос на закрытие процесса, но не гарантирует, что этот запрос будет выполнен, он может быть поставлен в очередь. Для обязательного закрытия следует использовать Kill(), который обязывает процесс завершить выполнение.

kiss_a, используй это
C#
1
2
3
4
private void Form_main_FormClosed(object sender, FormClosedEventArgs e)
        {
           pr.Kill();
        }
1
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 34
10.07.2010, 03:06  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Terion
pr.Kill();
Незнал что c# так жесток, спасибо помогло

Ток вот форма так и отказывается принимать нажатые клавиши

Добавлено через 14 минут
Проблему с событием Form_main_KeyDown решил добавя его всем элементам формы которые могут быть в фокусе.
0
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
10.07.2010, 09:33
Цитата Сообщение от nio Посмотреть сообщение
Terion, pr один и он не завершился, нет никакого доп процесса для отображения справки, все выполняется в одном процессе (pr в данном случае). Просто метод Close() посылает запрос на закрытие процесса, но не гарантирует, что этот запрос будет выполнен, он может быть поставлен в очередь. Для обязательного закрытия следует использовать Kill(), который обязывает процесс завершить выполнение.
действительно)))а я попробовала обратиться к HasExisted и неправильно интерепретировала результат))он ведь и вправду писал, что поток не завершился
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
10.07.2010, 12:59
Странно, сколько пишу на решетке и думал, что события для формы срабатывают даже при фокусе какого-то из элементов
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
10.07.2010, 23:13
Terion, не надо к каждому в фокусе добавлять. см. событие HelpRequested

Не по теме:

зы. рекомендую события KeyDown, KeyPress, PreviewKeyDown и прочие ProcessCmdKey пока не использовать

0
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
12.07.2010, 11:52
C#
1
2
3
4
5
6
7
8
9
      protected override void OnKeyDown(KeyEventArgs e)
        {
            base.OnKeyDown(e);
 
            if (e.KeyCode == Keys.F1)
            {
                MessageBox.Show("Im KeyDown");
            }
        }
но у формы действительно есть событие HelpRequested
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2010, 11:52
Помогаю со студенческими работами здесь

Проверка запущенного процесса по PID
Здравствуйте! Подскажите, пожалуйста, как можно проверить существование запущенного процесса по PID? Я сделал так: try...

Как поменять приоритет запущенного процесса?
Суть такова. Моя программа запускает процесс (а именно - блокнот) и выводит в textbox его приоритет. Дальше, не прерывая прогу, нужно...

Не меняется приоритет процесса запущенного приложения - C#
Программа запускает процесс и выводит в textbox его приоритет. Дальше нужно открыть диспетчер задач, найти этот процесс и поменять там его...

Существует ли возможность вычислить md5 запущенного процесса?
Всем привет! Существует ли возможность вычислить md5 запущенного процесса? Я искал готовую функцию но к сожалению не смог найти...

Поменять приоритет процесса запущенного приложения и отобразить в textbox
Привет, есть такая проблема: программа запускает процесс и выводит в textbox его приоритет. Дальше нужно открыть диспетчер задач, найти...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru