Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2010, 16:24   #1
gpcore
Пользователь
 
Регистрация: 05.09.2010
Сообщений: 17
По умолчанию Убийство процесса по символам, возможно?

Привет. Изучая с++ я новичок, поэтому возник вопрос можно ли убить процесс только по нескольким символам в нем? Можно взглянуть на пример? Например, у меня процесс bat.exe, сейчас я могу убить его по такому имени. Но если сделать bat1.exe, то уже не могу. Можно сделать как нибудь, чтобы моя программа отслеживала процесс по ключевым символам типа убить все процессы содержащие "bat"

Помогите дописать проверку в мой код : )
Код:
				
				HANDLE snap;
				PROCESSENTRY32 pentry32;
				snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

				//proc1
				char lpNameProcess[] = "bat.exe";

				if (snap == INVALID_HANDLE_VALUE) return;
		 
				pentry32.dwSize = sizeof(PROCESSENTRY32);
		 
				if (!Process32First(snap,&pentry32))
				{
					CloseHandle(snap);
				}
		 
				do
				{
					//pro1 kill
					if (!lstrcmpi(lpNameProcess,&pentry32.szExeFile[0]))
					{
						HANDLE proc2;
						proc2 = OpenProcess(PROCESS_ALL_ACCESS, false, pentry32.th32ProcessID);
						TerminateProcess(proc2, 0xDEAD);
						CloseHandle(proc2);
					}

				} while (Process32Next(snap,&pentry32));
		 
				CloseHandle(snap);
			 }
То же для символов в заголовке окна. Сейчас если обозвать окно Bat - mail то уже не находит его.


Код:
				//proc1
				HWND hwnd;
				DWORD dwPID = NULL;
				
				//proc1 window
				hwnd = FindWindow(NULL, TEXT("Bat"));

				if (hwnd)
				GetWindowThreadProcessId(hwnd, &dwPID);

				HANDLE proc;
				proc = OpenProcess(PROCESS_ALL_ACCESS, false, dwPID);
				TerminateProcess(proc, 0xDEAD);
				CloseHandle(proc);

Последний раз редактировалось gpcore; 18.09.2010 в 16:28.
gpcore вне форума Ответить с цитированием
Старый 18.09.2010, 16:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не ошибаюсь тебе поможет функция strstr, которая должна искать подстроку в строке.
Код:
if (!strstr(lpNameProcess,&pentry32.szExeFile[0]))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2010, 16:46   #3
gpcore
Пользователь
 
Регистрация: 05.09.2010
Сообщений: 17
По умолчанию

Предлагаешь заменить мне
if (!lstrcmpi(lpNameProcess,&pentry32. szExeFile[0]))
на твой вариант? А он не начнет искать еще и по exe сразу? Ведь если речь о символах, тогда видимо в значение
char lpNameProcess[] = "bat.exe";
нужно писать символы процесса, а не его полное имя?
gpcore вне форума Ответить с цитированием
Старый 18.09.2010, 18:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А он не начнет искать еще и по exe сразу?
Всмысле?
Цитата:
нужно писать символы процесса
Просто часть подстроки, которая попадается в имени и расширении процесса.
Почитай описание этой функции
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск процесса в потоке, завершение процесса в указааноое время, Дайте совет Человек_Борща Общие вопросы Delphi 3 29.08.2010 12:58
Убийство миллиционеров в Приморье Баламут Свободное общение 62 16.06.2010 11:39
Поиск в Memo по крайним символам saggy Общие вопросы Delphi 3 17.02.2010 21:12
Поиск строк по символам в Memo Nocturnal Помощь студентам 2 15.12.2009 17:33
Как в RichEdit обращаться к символам Lissisa Компоненты Delphi 2 19.02.2009 08:01