|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.01.2011, 19:45 | #1 |
Пользователь
Регистрация: 03.01.2011
Сообщений: 64
|
работа с процессами
Используется библиотека Tlhelp32
Программа находит нужный процесс по куску кода и отрубает его Код:
А теперь, внимание, проблемма: если выбранный для убийства процесс является проектом дельфи и запущен после моей она убивает сама себя (видимо из-за совпадения кода). С какого места надо начинать копировать код чтобы не было совпадений? (Я копировал с начала исполняемого кода - $401000)
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
Последний раз редактировалось niki2012; 11.01.2011 в 18:05. |
10.01.2011, 19:52 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а почему бы в поиске готовый код не найти?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
10.01.2011, 20:01 | #3 |
Пользователь
Регистрация: 03.01.2011
Сообщений: 64
|
Я вообще-то спрашивал в чем проблема в моем коде... Но если есть готовый код - не откажусь. А насчет найти - я не нашел (мб искать не имею нормально)
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
Последний раз редактировалось niki2012; 10.01.2011 в 20:06. |
11.01.2011, 17:41 | #4 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Насчет оптимизации... Если Вы уверены, что програму не будут запускать на Win98 то энумерация процессов выгоднее:
Код:
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось Johnson; 11.01.2011 в 17:45. |
11.01.2011, 18:01 | #5 |
Пользователь
Регистрация: 03.01.2011
Сообщений: 64
|
Спасибо большое, Johnson, учту! Кстати, я понял в чем была проблема - я сравнивал только начало кода и, по-видимому, у проектов дельфи оно одинаковое. Из-за этого программа, при попытке убить другой дельфи-проект, натыкалась сначала на себя и отключалась. Вы не подскажите с какого места надо начинать копировать код чтобы не было совпадений? (Я копировал с начала исполняемого кода - $401000)
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
|
11.01.2011, 18:09 | #6 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Ну, таким способом, как делаете Вы - не правильно в корне... Думаю, правильнее будет искать процесс по имени файла, либо по заголовку окна или именя класса окна...
Расскажите конкретнее задачу, которую Вы решаете. А по Вашему вопросу - пометьте как-либо своё процесс... Либо, опять же, сделайте исключение по имени файла своего процесса, либо по имени класса, либо по хэндлу процесса (GetCurrentProcessID) PS: сам который день бьюсь над чужими процессами и памятью Только намерения коварнее, чем простое убийство
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось Johnson; 11.01.2011 в 18:16. |
11.01.2011, 18:18 | #7 |
Пользователь
Регистрация: 03.01.2011
Сообщений: 64
|
Я пишу родительский контроль. Пользователь-"администратор" (родитель) добавляет приложения в черный/белый списки и в зависимости от этого процессы убиваются/не убиваются. Также там будет ограничение по времени и тп но сейчас не об этом
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
|
11.01.2011, 18:21 | #8 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
тогда проще хэши файлов хранить и память не трогать
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
11.01.2011, 18:26 | #9 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Да, либо хэши, либо по сочетанию имя_файла+имя_класса+заголовок_окна , либо по совпадению с любым из них.
Второе предпочтительнее, если хотете, например, запретить просматривать в браузере страницы со словом "секс" в названии/заголовке. К тому же, дети - хитрый народ. Скачают новую версию - вот и не работает контроль Получение имени файла для моего примера: Код:
Вот, кстати, неплохой пример: http://www.delphisources.ru/pages/fa...umwindows.html Там главное понять, что функции нужно скармливать не переменную, а указатель на каллбэк-процедуру PS: ещё интересен вариант с поиском запретных строк в памяти... правда, это долго очень и геморойно...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось Johnson; 11.01.2011 в 18:35. |
11.01.2011, 18:34 | #10 |
Пользователь
Регистрация: 03.01.2011
Сообщений: 64
|
Возможно вопрос глупый, но все же - что такое хэш?
А про хитрый народ - знаю не понаслышке, ибо сам таковым являюсь (14 лет все-таки). Есть вариант запрещать запуск приложений, не содержащихся в списке (при запуске просить ввести родительский пароль и выбрать в какой список добавить - черный или белый) P.S. Пожалуйста, зайдите в еще одну мою тему - про реестр http://www.programmersforum.ru/showt...843#post708843
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
Последний раз редактировалось niki2012; 11.01.2011 в 19:12. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с Windows процессами | niki2012 | Общие вопросы Delphi | 4 | 07.03.2011 14:44 |
[Вопросы]Работа с процессами. Процессы изнутри | Человек_Борща | Общие вопросы Delphi | 2 | 03.04.2010 18:37 |
Управление процессами | An123 | Помощь студентам | 2 | 18.12.2009 23:14 |
управление процессами | An123 | Общие вопросы C/C++ | 5 | 29.11.2009 14:46 |
убить процесс по его идентификатору - Работа с процессами | ACE Valery | Общие вопросы C/C++ | 8 | 04.06.2009 21:51 |