Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бежит ли программа?.. 
:(
    Опции темы
szz
Дата 27.12.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Как мне узнать, запущена ли программа которая видна в диспетчере задач как "my_program.exe"? И... как убить ее?


--------------------
PM   Вверх
takedo
Дата 27.12.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: -1
Всего: 3



ну если видна - значит запущена smile  Вот если бы была не видна, тогда другое дело.... А так ответ да.

Добавлено @ 11:25 
Убить её можно из того же диспетчера задач, правой кнопкой на процессе, всплывает меню, а там завершить процесс.


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
apook
Дата 27.12.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: нет
Всего: 23



С помощью утилиты process.exe

Это сообщение отредактировал(а) apook - 27.12.2006, 12:49

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  Process.exe.7z 22,31 Kb


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
codelord
Дата 27.12.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 3
Всего: 39



Цитата(takedo @  27.12.2006,  07:24 Найти цитируемый пост)
Убить её можно из того же диспетчера задач, правой кнопкой на процессе, всплывает меню, а там завершить процесс.

Цитата(apook @  27.12.2006,  08:40 Найти цитируемый пост)
С помощью утилиты process.exe

а причем тут программирование?

Если надо, не знаю на чем пишешь, хотя в принципе пример практически Api шный..
довольно большой код:
функция убивающая процесс по его PID.
Код

bool KillProcByPid(DWORD pid)
{
DWORD ExitCode;
HANDLE hp;
bool ret = true;

if(pid)
        {
        hp = OpenProcess(PROCESS_ALL_ACCESS, true, pid);
        if (hp)
                {
                GetExitCodeProcess(hp, &ExitCode);
                ret = TerminateProcess(hp, ExitCode);
                }
        else
                {
                return false;
                }
        }
else
        {
        return false;
        }

CloseHandle(hp);
return ret;
}

функция которая возвращает Pid по его имени exe
Код

bool GetProcessByExeName(DWORD* Pid,String ExeName)
{
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32      = {0};
String temp="";

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
pe32.dwSize=sizeof(PROCESSENTRY32);

if(Process32First(hProcessSnap,&pe32)) temp=pe32.szExeFile; 
if((temp.UpperCase()).Pos(ExeName.UpperCase()))
       {
       *Pid= pe32.th32ProcessID;
       CloseHandle (hProcessSnap);
       return true;
       }
pe32.dwSize=sizeof(PROCESSENTRY32);

while(Process32Next(hProcessSnap,&pe32))
        {
        temp=pe32.szExeFile;
        if((temp.UpperCase()).Pos(ExeName.UpperCase()))
                {
                *Pid= pe32.th32ProcessID;
                CloseHandle(hProcessSnap);
                return true;
                }
        pe32.dwSize=sizeof(PROCESSENTRY32);
        }
        
CloseHandle(hProcessSnap);
*Pid=0;
return false;
}
 
в хедере д.б. #include "tlhelp32.h"
т.е. юзаем приблизительно так:
Код

 DWORD *pid = new DWORD;
 GetProcessByExeName(pid,"notepad.exe");
 KillProcByPid(*pid);




--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
szz
Дата 29.12.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Цитата
Убить её можно из того же диспетчера задач, правой кнопкой на процессе, всплывает меню, а там завершить процесс.

   О, спасибо! А что такое правая кнопка? И что такое "всплывает меню"? Это такие функции С++?  smile 


codelord, спасибо, здорово!
   А как мне приоритет программы поменять, если есть пид?


--------------------
PM   Вверх
codelord
Дата 29.12.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 3
Всего: 39



Вот накатал функцию:
Код

bool SetPriorProcessByPid(DWORD *pid, int flags)
        {
         HANDLE ProcessHandle;
         ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS,false,*pid);
         if (!SetPriorityClass(ProcessHandle, flags)) return false;
         CloseHandle(ProcessHandle);
         return true;
        }

пользуемся так:
Код

DWORD *pid = new DWORD;
GetProcessByExeName(pid,"calc.exe");
SetPriorProcessByPid(pid,HIGH_PRIORITY_CLASS);

ну и флаги на приоритетов:
Цитата
 
ABOVE_NORMAL_PRIORITY_CLASS
0x00008000 Process that has priority above NORMAL_PRIORITY_CLASS but below HIGH_PRIORITY_CLASS.
Windows NT and Windows Me/98/95:  This value is not supported. 

BELOW_NORMAL_PRIORITY_CLASS
0x00004000 Process that has priority above IDLE_PRIORITY_CLASS but below NORMAL_PRIORITY_CLASS.
Windows NT and Windows Me/98/95:  This value is not supported. 

HIGH_PRIORITY_CLASS
0x00000080 Process that performs time-critical tasks that must be executed immediately. The threads of the process preempt the threads of normal or idle priority class processes. An example is the Task List, which must respond quickly when called by the user, regardless of the load on the operating system. Use extreme care when using the high-priority class, because a high-priority class application can use nearly all available CPU time. 

IDLE_PRIORITY_CLASS
0x00000040 Process whose threads run only when the system is idle. The threads of the process are preempted by the threads of any process running in a higher priority class. An example is a screen saver. The idle-priority class is inherited by child processes. 

NORMAL_PRIORITY_CLASS
0x00000020 Process with no special scheduling needs. 

REALTIME_PRIORITY_CLASS
0x00000100 





--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
szz
Дата 11.1.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Спасибо!
  Прости что сразу не среагировал - был немного занят...  Понимаю, эгоистично, но вот, исправляюсь smile


--------------------
PM   Вверх
DominiK
Дата 14.4.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Отличная тема, все ясно написано smile  такой вопрос. Вот у меня есть ***.exe, как отловить влияние на него другого процесса. Мне надо грохать его сразу....(Процесс который хочет вмешаться).
Эвристика антивирусов позволяет это зделать..вот надо что то похожее!

ЗЫ: Пишу античит smile  IDE - Borland C++ 2006

Это сообщение отредактировал(а) DominiK - 14.4.2007, 23:45
PM MAIL   Вверх
W4FhLF
Дата 15.4.2007, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Да причём тут эвристическа вообще?smile АВ перехватывают в зермоде и в ядре нужные функции и мониторят параметры. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
DominiK
Дата 15.4.2007, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Знач ошибся, но суть не в этом.. Ты б лучше помог с (как отловить влияние на него другого процесса. Мне надо грохать его сразу....(Процесс который хочет вмешаться).
 Вот.

Это сообщение отредактировал(а) DominiK - 15.4.2007, 08:29
PM MAIL   Вверх
W4FhLF
Дата 15.4.2007, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



А ты попробуй поискать по словам: "перехват API"


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.