![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Noman |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 21.4.2007 Где: /mnt/Nowhere Репутация: нет Всего: нет |
Доброго времени суток, уважаемые программисты.
Вопрос мой такой - мне нужно уничтожить 5 процессов одновременно и\или проверить их существование. Подробнее ситуация такая: Есть 5 полей ввода (сама программа написана на C++ Builder 6), данные из которых идут в ini-файл. Оттуда эти данные читаются. Основная задача в том, что нужна функция, которая могла бы сработать проверить наличие процессов, и, при их наличии, через промежуточный символ (образно зпт), или для каждого по отдельности - их убить, а при их отсутствии или бездействовать или вывести сообщение (не столь принципиально). Я поспрошал людей, поискал в сети и все что нашел, это:
и это:
Более подробной информации мне найти не удалось, разве что на microsoft-е. Но и там я много не понял... |
||||
|
|||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
||||
|
||||
| Noman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 21.4.2007 Где: /mnt/Nowhere Репутация: нет Всего: нет |
Что-то я все же никак не придумаю, как мне поступить...
Есть такой вариант:
Работает это хорошо, но.... Но это завершает только 1 процесс, а мне нужно 1-5. Я сделал так, что при пустом поле любого из Edit-ов в файл ini идет 0. Соответственно, если процесс есть, то туда записывается его имя. Возможно есть вариант использовать цикл, который бы проверял процессы на наличие 0, и пропускал бы такие, но я не могу сообразить, как мне это обыграть.... Подскажите, кто знает... Это сообщение отредактировал(а) Noman - 30.4.2007, 19:36 |
|||
|
||||
| Noman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 21.4.2007 Где: /mnt/Nowhere Репутация: нет Всего: нет |
Up! Вопрос еще актуален. Товарищи, подскажите, кто знает...
|
|||
|
||||
| Syberex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 15.9.2006 Где: Украина Репутация: нет Всего: нет |
--------------------
whole power in artificial intelligences |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 5 Всего: 95 |
Вобщем-то, Syberex ответил, но...
Просто ради интереса встречный вопрос: а зачем тебе убивать процессы?
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| Noman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 21.4.2007 Где: /mnt/Nowhere Репутация: нет Всего: нет |
Спасибо, что ответили
ama_kid, сейчас я объясню. Вообщем суть самой программы такова. Некоторые приложения мешают компу "уснуть", то бишь перевестись в спящий режим. Для этого я пишу данную программу. В те поля ввода вводятся названия процессов, и при нажатии кнопки или таймеру, процессы "убиваются" и комп уходит в спячку. Я понимаю, что TerminateProcess() - это очень нехорошая вещь, которая оставляет хвосты и загруженные dll, и действительно целесообразнее было бы "попросить" их закрыться, а уже при отказе "убить" их. Но я боюсь, что моих знаний не хватит. Кстати этот ini по сути только для того, чтобы сохранить настройки, введенные пользователем. А как работает Broadcast? Может лучше использовать его?... Я пытался найти информацию по-поводу этого, но мне мало что удалось узнать об этом... |
|||
|
||||
| Noman |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 21.4.2007 Где: /mnt/Nowhere Репутация: нет Всего: нет |
Долго меня не было...
Сейчас сел за билдер, и почувствовал полное отсутствие мыслей. Пытаюсь понять код который привел Syberex... Получается так. Объявили функцию:
Объявили переменную x и присвоили ей нулевое значение. Далее объявили pid:
Значит пока x меньше 50 цикл выполняется, с каждым проходом увеличиваясь на 1. Это понятно. После окончания цикла переменная pid удаляется. Это тоже понятно. Не понятно только одно. Здесь есть конкретное имя процесса. А в моем варианте его нет... Но есть имена массивов, с названиями процессов или, если они не были введены, то 0-ями. Их названия cpa, cpb, cpc, cpd, cpe, а вынуты они с помощью strcpy ().
При компиляции получаю ошибки следующего содержания:
Если я напишу так:
то получаю примерно те же ошибки. Теоретически массив передает char, а не AnsiString. Значит мне будет нужно переконвертировать их, и использовать 5 раз для каждого процесса? Или я что-то не так понял? Заранее спасибо и прошу прощения за собственную тупость... |
||||||||||
|
|||||||||||
| Syberex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 15.9.2006 Где: Украина Репутация: нет Всего: нет |
некорректно как то у тебя получается,а зачем тебе надо имена процессов, не легче ли определить по именам пиды процессов и занести их в массив???
--------------------
whole power in artificial intelligences |
|||
|
||||
| Noman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 21.4.2007 Где: /mnt/Nowhere Репутация: нет Всего: нет |
Странно, я ответил, а он не прошел. Глюк
Вообщем добил я ее, спасибо всем. Особенно Syberex. На это "чудо" можно посмотреть на этой страничке (там и исходники и бинарник). Но большая просьба отнестись снисходительно и ногами не пинать Это сообщение отредактировал(а) Noman - 13.5.2007, 22:57 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |