Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как найти ID процесса окна  (Прочитано 22202 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
monrus
Опытный

ru
Offline Offline

« : 14-01-2008 09:42 » 

Я нахожу хендл окна с помощью FindWindow
Как по этому хендлу найти ID процесса этого окна?
Записан
DemonicAlligator
Гость
« Ответ #1 : 14-01-2008 09:53 » 

DWORD GetWindowThreadProcessId(
  HWND hWnd,             // handle to window
  LPDWORD lpdwProcessId  // process identifier <---- вот оно Улыбаюсь
);

или в дельфийской нотации:

Function  GetWindowThreadProcessId(hwnd:HWND; var dwprocessId:Cardinal):Cardinal;
« Последнее редактирование: 14-01-2008 09:57 от Синий Аллигатор » Записан
monrus
Опытный

ru
Offline Offline

« Ответ #2 : 14-01-2008 10:36 » 

По этой функции у меня находит какой-то поток данного процесса, а можно ли выйти на сам процесс через этот поток?
Записан
DemonicAlligator
Гость
« Ответ #3 : 14-01-2008 10:48 » 

var dwprocessId:Cardinal - это и будет ID процесса
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #4 : 14-01-2008 10:59 » 

у меня программа есть InqSoft Window Scanner - то что выдает мне моя прога - window scanner показывает что это только id потока , а id процесса другой.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 14-01-2008 11:14 » 

monrus, ID процесса проще посмотреть в ctrl+alt+del Улыбаюсь
Записан

monrus
Опытный

ru
Offline Offline

« Ответ #6 : 14-01-2008 11:17 » 

я знаю - тогда надо лишние телодвижения делать ручкамит- зачем тогда программирование
Записан
DemonicAlligator
Гость
« Ответ #7 : 14-01-2008 11:44 » 

Ээээ... насколько мне известно, Tread Id - это то, что возвращает сама функция, а в переменную суёца ID процесса... да и я сам этой же функцией пользуюсь...
Записан
zubr
Гость
« Ответ #8 : 14-01-2008 15:44 » 

monrus, а что дальше ты собираешься с этим ID делать?
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #9 : 15-01-2008 02:25 » 

потом TerminateProcess.
если после GetWindowThreadProcessId поставить значение в TerminateProcess, то убивается поток какой-то в процессе, а сам процесс остается. Я понимаю что после этого можно еще раз сделать FindWindow->GetWindowThreadProcessId и возможно найдеться ID процесса, но это как-то глупо.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 15-01-2008 04:22 » 

monrus, поюзай taskkill Улыбаюсь Убивает наповал
Записан

monrus
Опытный

ru
Offline Offline

« Ответ #11 : 15-01-2008 04:49 » new

Сорри. все понял, действительно в var dwprocessId:Cardinal находится ID процесса, а сама функция возвращает ID потока.

Всем большое спасибо!!!
« Последнее редактирование: 15-01-2008 04:58 от monrus » Записан
zubr
Гость
« Ответ #12 : 15-01-2008 04:56 » 

monrus, ты неправильно делаешь. Ты подставляешь в функцию TerminateProcess индентификатор процесса, а не хендл процесса. Надо сначала получить хендл процесса, используя функцию OpenProcess, подставляя в нее индентификатор процесса.
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #13 : 15-01-2008 04:59 » 

да я так и сделал - просто не написал че дальше происходит Улыбаюсь
В одном туторе видел, что после TerminateProcess, зачем-то CloseHandle на хендл этого процесса делается?
Записан
zubr
Гость
« Ответ #14 : 15-01-2008 05:07 » 

CloseHandle надо делать. Тем самым ты сообщаешь винде, что данный хендл больше не нужен.
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #15 : 15-01-2008 05:24 » 

аа- ok.
Записан
DemonicAlligator
Гость
« Ответ #16 : 15-01-2008 13:25 » 

Вот так, совместными усилиями, и был создан новый руткит Жжешь
Записан
zubr
Гость
« Ответ #17 : 15-01-2008 15:31 » 

Синий Аллигатор, тсс..., а то еще посодют за соавторство Улыбаюсь)
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #18 : 16-01-2008 03:35 » 

Да все нормально - не переживайте Ага
Просто у меня программа консольная установлена, которая при обрыве связи виснет, а админы отключили кнопку закрытия окна, приходилось лезть в диспетчер задач. А вам всем спасибо за то что помогаете!!!
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #19 : 16-01-2008 03:37 » 

А насчет руткитов - проще в инете скачать, зачем тратить время на создание того, что уже сделано другими Ага
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #20 : 16-01-2008 04:18 » 

А насчет руткитов - проще в инете скачать, зачем тратить время на создание того, что уже сделано другими Ага
вот это в последнее время и грустно - вирусов и так дохренища (
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines