Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Информация о наборе модулей процесса

Информация о наборе модулей процесса

Теперь выясним, как выполнить цикл по всем модулям, загруженным в рамках данного процесса. Напомним, что модуль - это общее название, используемое для обозначения *.dll (или *.exe). При доступе к ProcessModuleCollection с помощью свойства Process.Module вы получаете перечень всех модулей, задействованных в рамках соответствующего процесса – модулей .NET, модулей COM и традиционных библиотек C. Рассмотрите следующую вспомогательную функцию, которая перечислит модули конкретного процесса, заданного с помощью PID.

public static void EnumModsForPid(int pID) {
 Process theProc;
 try {
  theProc = Process.GetProcessById(pID);
 } catch {
  Console.WriteLine("-› Извините, некорректное значение PID!");
  Console.WriteLine("************************************n");
  return;
 }
 Console.WriteLine("Загруженные модули для {0}:", theProc.ProcessName);
 try {
  ProcessModuleCollection theMods = theProc.Modules;
  foreach (ProcessModule pm in theMods) {
   string info = string.Format("-› Имя модуля: {0}", pm.ModuleName);
   Console.WriteLine(info);
  }
  Console.WriteLine("************************************n");
 } catch {
  Console.WriteLine("Модулей не обнаружено!");
 }
}

Чтобы увидеть пример возможного вывода программы, давайте проверим затрушенные модули для. процесса, выполняемого в рамках рассматриваемого здесь консольного приложения ProcessManipulator. Для этого запустите приложение, выясните значениеPID, соответствующее ProcessManipulator.exe, и передайте это значение методу EnumModsForPid() (не забудьте соответствующим образом обновить метод Main(). Вы, наверное, удивитесь, увидев весь список модулей *.dll, которые используются для такого простого консольного приложения (atl.dll, mfc42u.dll, oleaut32.dll и т.д.). На рис. 13.5 показан результат запуска.


Рис. 13.5. Перечень загруженных модулей в рамках выполняющегося процесса

Оглавление книги


Генерация: 0.100. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз