![]() |
|
|
![]()
|
|
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Всем доброго времени суток! Вот тут собственно... возник такой вопросик. FindWindow возвращает Хендл окна. Вписывать в него надо класс окна + как бы оглавление... Ф-ция TerminateProcess "убивает" процесс по его Хендлу.
Но вот собственно: TerminateProcess(FindWindow("Notepad","Безымянный - Блокнот"),0); Не работает... в принципе как и любое другое... не важно что но оно почему то не закрывает... почему? Есть ещё аналоги полного убийства имея хендл окна? В Делфях было всё просто я узнавал Хендл, по Хендлу определял имя ехе, а потом уже его убивал =) эта смесь убивала всё =) не важно что перед ней стояло ))))) а тут что-то не могу найти "аналогов"... Помогите пожалуйста! |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 25 Всего: 372 |
Kirgston, вообще-то в TerminateProcess передается индентификатор процесса, а не дескриптор окна - это две совсем разные вещи. К тому же я бы не советовал использовать TerminateProcess - корректнее, ИМХО, послать окну сообщение о закрытии(WM_CLOSE).
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
открой MSDN, там английским по белому написано "A handle to the process to be terminated", а FindWindow возвращает хэндл окна, так почему-же это могло работать в Delphi?
на самом деле тебе нужно определить id процесса, потом открыть это процесс, затем, если у тебя есть соответствующие права - убить его |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Ребят... дело не в корректности а в том... короче надо "выбить" программу =) чтобы у неё уж точно не осталось шансов на жизнь =)
В Делфи работало наверно потому что ему надо было Хендл окна... Хех... а как узнать ИД? просто... бывают такие интересные программки которые меняют ехе и Title в зависимости от названия ехе файла... вот с такими программками я в делфи научился боротся =) ресурсов много не кушает ... но не нравится то что код в С++ в 2 раза меньше оперативки кушает чем в Делфи =) потому "сие чудо" хочу перенести на С++ =) |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 25 Всего: 372 |
Это продолжение этой темы:
http://forum.vingrad.ru/forum/topic-243314...cess/index.html А API они и в Африке API.
Пашет в Делфи? Тебе все уже Lazin сказал. Добавлено через 4 минуты и 10 секунд 1. Ищешь окно через FindWindow. 2. Получаешь ID процесса через GetWindowThreadProcessId 3. Открываешь с помощью OpenProcess 4. Убиваешь через TerminateProcess, передавая туда результат из OpenProcess. Ну и проверка на ошибки должна быть обязательно. |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Ух! =) ладненько поищем ! =) щас буду разбираться... а вот у меня такой вопросик... а может можно узнать имя запущенного ехе через Хендл окна?
|
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 25 Всего: 372 |
Стоп. А в этой теме: http://forum.vingrad.ru/forum/topic-243314...cess/index.html У тебя что? Вроде там это и требовалось и вопрос был решен? Это сообщение отредактировал(а) THandle - 21.2.2009, 19:56 |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Ееее ну да =) только вы посмотрите что разделы несколько сменились =) то что я сделал на Делфи я хочу перенести на С++ =) в пользу меньшего поедания ресурсов ))))) но у меня не очень то получается...
|
|||
|
||||
| Kirgston |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Ребята =) давайте подумаем логично ^_^ Делфи (Борланд) и С++ (Борланд) . Разница только в синтаксисе =) Помогите пожалуйста перенести код с Делфи на С++
Ребята не думаю что для знающих людей это не станет проблемой т.к. тут вроде только проблема в синтаксисе... =) просто я только недавно перешел на С++ и всех "извилин" С++ не знаю :( пока что проблема в ссылках и указателях. Помогите пожалуйста с переводом! Заранее большое спасибо!!! |
||||
|
|||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Вот перевел как знал... конечно есть ошибки... [BCC32 Error] Unit1.cpp(80): E2034 Cannot convert 'tagPROCESSENTRY32' to 'tagPROCESSENTRY32 *' // [BCC32 Error] Unit1.cpp(80): E2342 Type mismatch in parameter 'lppe' (wanted 'tagPROCESSENTRY32 *', got 'tagPROCESSENTRY32') // [BCC32 Warning] Unit1.cpp(82): W8066 Unreachable code // [BCC32 Error] Unit1.cpp(82): E2188 Expression syntax Ребят помогите пожалуйста |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 25 Всего: 372 |
Kirgston, return выходит из функции, вводи новую строковую переменную. Значения надо передавать по ссылке:
Типа:
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |