Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.61
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,033
#1

TerminateProcess - C++ WinAPI

07.06.2012, 20:16. Просмотров 4591. Ответов 12
Метки нет (Все метки)

1)Господа не понятно вот , что - как зная имя окна я могу получить HANDLE ?
2)Где можно почитать о привелегиях доступа , что бы закрывать процессы или хотя бы названия функций .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2012, 20:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос TerminateProcess (C++ WinAPI):

Перехват TerminateProcess - C++ WinAPI
Добрый день. У меня такой вопрос. Я перехватываю TerminateProcess и хочу запретить завершать мой процесс. Но когда я пытаюсь узнать какой...

Перехват TerminateProcess по примеру Рихтера. Не работает - C++ WinAPI
Очень надо реализовать неубиваемую программу. Переделал код Рихтера под TerminateProcess. dll должна менять адрес оригинальной функции на...

Поиск intermodular calls. Как найти адрес, по которому загружен TerminateProcess? - C++ WinAPI
В загруженном в память процессе есть вызовы на различные библиотеки и их функции примерно такого вида CALL DWORD PTR DS: Как найти...

Отследить TerminateProcess - C++
Могу ли я в своем приложении отследить, когда кто-то снаружи меня мочит, то есть TerminateProcess мне делает, никаких оконных сообщений...

TerminateProcess(FileName.exe) - Assembler
Как завершить процесс в WinXP ? HANDLE hProcess - как это получить?

Чем опасен TerminateProcess? - C++ Builder
Можно ли (правильно ли) вместо exit, ExitProcess, Close писать такой код? HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false,...

12
-=ЮрА=-
Заблокирован
Автор FAQ
07.06.2012, 21:06 #2
Цитата Сообщение от Игорь с++ Посмотреть сообщение
1)Господа не понятно вот , что - как зная имя окна я могу получить HANDLE ?
2)Где можно почитать о привелегиях доступа , что бы закрывать процессы или хотя бы названия функций
1-е конено же через OpenProcess
http://www.vsokovikov.narod.ru/New_M...penprocess.htm

Добавлено через 2 минуты
2-е в этой теме мной выложен код позволяющий устанавливать привилегию SE_DEBUG для процесса при открытой групповой политике
Привилегии отладки GetDebugPriv

Добавлено через 56 секунд

Не по теме:

PS:Игорь с++, так по твоим темам смотрю ты что менеджер для системы пишешь?



Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
PS:Игорь с++, так по твоим темам смотрю ты что менеджер для системы пишешь?
- тебе пригодится Как узнать заголовок окна по PID процесса

1
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,033
07.06.2012, 21:27  [ТС] #3
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Игорь с++, так по твоим темам смотрю ты что менеджер для системы пишешь?
что то типо того

Добавлено через 3 минуты
-=ЮрА=-, что то я не пойму , допустим я знаю название окна "Калькулятор" как узнать PID
0
SDmaN
54 / 51 / 2
Регистрация: 22.07.2011
Сообщений: 436
08.06.2012, 01:25 #4
C++
1
2
3
HWND hWnd = FindWindow(NULL, "Калькулятор");
DWORD ProcessId; // PID
GetWindowThreadProcessId(hWnd, &ProcessId);
1
-=ЮрА=-
Заблокирован
Автор FAQ
08.06.2012, 09:19 #5
Цитата Сообщение от Игорь с++ Посмотреть сообщение
-=ЮрА=-, что то я не пойму , допустим я знаю название окна "Калькулятор" как узнать PID
Посмотри сюда
HWND hwnd- получение...
Кроме этого в этом коде
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
как узнать Заголовок окна на PID процесса
есть этот момент

Добавлено через 1 минуту
c_wndlist.h
C++
1
2
3
4
5
6
void c_wndlist::scan4procs()
{
        ...
       pINFO[nCell].dwTID =  GetWindowThreadProcessId((HWND)pINFO[nCell].dwHWND,
      &pINFO[nCell].dwPID); 
       ....
Добавлено через 35 секунд
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(HWND)pINFO[nCell].dwHWND
- HWND
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
&pINFO[nCell].dwPID
- &PID
1
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,033
08.06.2012, 09:25  [ТС] #6
а HANDLE процесса через OpenProcess и там уже указывать полученый PID,а далее как я понимаю этот HANDLE скармливать NerminateProcess ?
0
-=ЮрА=-
Заблокирован
Автор FAQ
08.06.2012, 09:31 #7
Цитата Сообщение от Игорь с++ Посмотреть сообщение
а далее как я понимаю этот HANDLE скармливать NerminateProcess ?
- да именно так
0
-=ЮрА=-
Заблокирован
Автор FAQ
08.06.2012, 09:36 #8
Игорь с++, опять же в моей программе всё єто есть посмотри обработку пункта контекстного меню Process->Kill
0
Миниатюры
TerminateProcess  
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,033
08.06.2012, 13:18  [ТС] #9
Блин прошу прощения но , что то у меня не получается , вот код -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
static HANDLE han;
 
static HWND hWnd;
 
static DWORD ProcessId; // PID
 
static int Error;
 
    switch (message)                  /* handle the messages */
    {
case WM_CHAR:
 
hWnd = FindWindow(NULL, "ГЉГ*ëüêóëÿòîð");
 
if(hWnd!=0){MessageBox(hwnd,"ГЋГЄГ*Г® îáГ*Г*ðóæåГ*Г*Г®","Г€Г*ôîðìГ*öèÿ",MB_OK);}
 
else{MessageBox(hwnd,"ГЋГЄГ*Г® Г*ГҐ îáГ*Г*ðóæåГ*Г*Г®","Г€Г*ôîðìГ*öèÿ",MB_OK);}
 
     GetWindowThreadProcessId(hWnd, &ProcessId);
 
han = OpenProcess (
                //PROCESS_QUERY_INFORMATION|
                    PROCESS_VM_READ, 
                    false, 
                    ProcessId
                    );
                    
Error=TerminateProcess(han,0);
  
  if(Error!=0){MessageBox(hwnd,"ГЋГЄГ*Г® Г§Г*êðûòî","Г€Г*ôîðìГ*öèÿ",MB_OK);}
 
else{MessageBox(hwnd,"ГЋГЄГ*Г® Г*ГҐ ГіГ¤Г*ВёГІГ±Гї Г§Г*êðûòü","Г€Г*ôîðìГ*öèÿ",MB_OK);}
 
     break;
Добавлено через 9 минут
Извеняюсь всё получилось надо было поставить в OpenProcess -
C++
1
PROCESS_ALL_ACCESS, true,
Всем огромное спасибо.А вот с антивирусами дело обстоит хуже,это не помогает,как быть(вы не подумайте я не вирус пишу,как раз наоборот),там как то подругому?Почему PROCESS_ALL_ACCESS не помогает ?
0
-=ЮрА=-
Заблокирован
Автор FAQ
08.06.2012, 13:31 #10
Цитата Сообщение от Игорь с++ Посмотреть сообщение
Почему PROCESS_ALL_ACCESS не помогает ?
- потому что не все процессы открываются вот так с наскоку. НО помогать грохать антивиры не буду из морально этических и вообще правовых соображений (это незаконно в общем случае писать такие программы для распростарнения).
1
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,033
08.06.2012, 17:02  [ТС] #11
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
НО помогать грохать антивиры не буду
да мне не антивирь грохнуть надо , я просто пишу прогу которая по нажатию горячей клавиши будет грохать банеры , а про антивирь я сказал просто для того , что если я грохну антивирь то уж думаю и банеры улетать будут , ну надеюсь ясно объяснил . Во всяком случае спасибо , буду дальше разбираться .
0
-=ЮрА=-
Заблокирован
Автор FAQ
08.06.2012, 21:27 #12
Игорь с++,
Цитата Сообщение от Игорь с++ Посмотреть сообщение
да мне не антивирь грохнуть надо , я просто пишу прогу которая по нажатию горячей клавиши будет грохать банеры
- для банеров хватит привилегий SE_DEBUG и TerminateProcess (всё это есть в коде моего менеджера окон).
1
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,033
08.06.2012, 22:34  [ТС] #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
для банеров хватит привилегий SE_DEBUG и TerminateProcess
а вот это уже интересно , нельзя ли по подробней ? И ещё вопрос - PROCESS_ALL_ACCESS может не хватить ?

Добавлено через 9 минут
и ещё если позволиш задам вопрос несколько вопросов -
1) Эта функция BOOL GetDebugPriv(PTOKEN_PRIVILEGES ptkpPrev) устанавливает привелегии для моего процесса ?
2) как её использовать в программе т.е. не совсем понятно , то что должно находиться в скобках (не обессуть если глупые вопросы задаю с этой темой со вчерашнего дня только разбираюсь).

Добавлено через 12 минут
так кое что прояснилось , если я правельно понял в скобках должно быть , что то из вот этого списка ?
SE_TCB_NAME
SE_BACKUP_NAME
SE_TAKE_OWNERSHIP_NAME
SE_DEBUG_NAME
SE_ASSIGNPRIMARYTOKEN_NAME
SE_INCREASE_QUOTA_NAME
SE_INC_BASE_PRIORITY_NAME
SE_LOCK_MEMORY_NAME
SE_SECURITY_NAME
SE_AUDIT_NAME
SE_SHUTDOWN_NAME

Добавлено через 45 секунд
если да , то что лучше применить для банеров ?

Добавлено через 8 минут
блин и из этого списка не чего не ставится , компилятор ругается , как туда впихнуть то ?
0
08.06.2012, 22:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2012, 22:34
Привет! Вот еще темы с ответами:

API функция TerminateProcess - Visual Basic
Kto mozet podskazat' primer, funkciju, el. upravlenija pri pomosi kotorogo mozno cita' sobitija Windows NT ili windows

Application->Terminate() vs TerminateProcess() - C++ Builder
Необходимо жестко, быстро и безоговорочно убить процесс (свой собственный). При этом мне НЕ нужно выполнения кода в деструкторах или какого...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.