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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2010, 15:10   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Вопрос [Вопросы]Работа с процессами. Процессы изнутри

Вот целая коллекция вопросов к вам уважаемые гуру..

Как получить список модулей которые загружает программа при запуске(dll'ки exe-файлы)?
Как узнать точку входа в программу?

как работать с TlHelp32?
Человек_Борща вне форума Ответить с цитированием
Старый 03.04.2010, 15:16   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)таблицу импорта читаем в PE секции импорта(читаем про PE)
2)там же в PE заголовке она указанна но как относительный адрес, впрочем его можно относительно чего он указан тоже известно
так что вам многое сводится к PE формату
вот спецификация от производителя
http://www.microsoft.com/whdc/system...re/PECOFF.mspx
насчет русского извиняйте, я не знаю, ибо владею английским.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.04.2010, 18:37   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

спасибо думаю вопрос решён=)
Вот:
Код:
procedure TProcessesInfoForm.FillModuleList(PID:Cardinal);
  var 
    HSnap:THandle;
     PEModules:TModuleEntry32;
     Item:TListItem;
  begin
   if PID=0 then
    Exit;
   HSnap:=CreateToolhelp32Snapshot(TH32CS_SnapModule,PID);
   if HSnap<>Invalid_Handle_Value then
    try
     PEModules.dwSize:=SizeOf(TModuleEntry32);
     if Module32First(HSnap,PEModules) then
      repeat
       Item:=ListView.Items.Add;
       Item.Caption:=PEModules.szModule;
       Item.SubItems.Add(IntToStr(PEModules.modBaseSize));
       Item.SubItems.Add('$'+IntToHex(Integer(PEModules.modBaseAddr),8));
       Item.SubItems.Add(PEModules.szExePath)
      until not Module32Next(HSnap,PEModules);
       ListView.Visible:=True
    finally
     CloseHandle(SnapMod)
    end
  end;
добавить ListView
и 4 колонки:
Имя
Размер
Базовый адрес
Путь

Последний раз редактировалось Человек_Борща; 03.04.2010 в 18:57.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление процессами An123 Помощь студентам 2 18.12.2009 23:14
управление процессами An123 Общие вопросы C/C++ 5 29.11.2009 14:46
убить процесс по его идентификатору - Работа с процессами ACE Valery Общие вопросы C/C++ 8 04.06.2009 21:51
Работа с консолью, вопросы Hacker19_90 Общие вопросы C/C++ 21 24.12.2008 20:41