Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.

Прежде чем двигаться дальше, необходимо уяснить, что тип
ProcessThread
ProcessThread
System.Threading
Исследование набора модулей процесса
Теперь давайте посмотрим, как реализовать проход по загруженным модулям, которые размещены внутри конкретного процесса. Когда речь идет о процессах, модуль — это общий термин, применяемый для описания заданной сборки
*.dll
*.ехе
ProcessModuleCollection
Process.Modules
static void EnumModsForPid(int pID)
{
Process theProc = null;
try
{
theProc = Process.GetProcessById(pID);
}
catch(ArgumentException ex)
{
Console.WriteLine(ex.Message);
return;
}
Console.WriteLine("Here are the loaded modules for: {0}",
theProc.ProcessName);
ProcessModuleCollection theMods = theProc.Modules;
foreach(ProcessModule pm in theMods)
{
string info = $"-> Mod Name: {pm.ModuleName}";
Console.WriteLine(info);
}
Console.WriteLine("************************************n");
}
Чтобы получить какой-то вывод, давайте просмотрим загружаемые модули для процесса, обслуживающего программу текущего примера (
ProcessManipulator
ProcessManipulator.exe
EnumModsForPid()
*.dll
GDI32.dll
USER32.dll
ole32.dll
Here are (some of) the loaded modules for: ProcessManipulator
Here are the loaded modules for: ProcessManipulator
-> Mod Name: ProcessManipulator.exe
-> Mod Name: ntdll.dll
-> Mod Name: KERNEL32.DLL
-> Mod Name: KERNELBASE.dll
-> Mod Name: USER32.dll
-> Mod Name: win32u.dll
-> Mod Name: GDI32.dll
-> Mod Name: gdi32full.dll
-> Mod Name: msvcp_win.dll
-> Mod Name: ucrtbase.dll
-> Mod Name: SHELL32.dll
-> Mod Name: ADVAPI32.dll
-> Mod Name: msvcrt.dll
-> Mod Name: sechost.dll
-> Mod Name: RPCRT4.dll
-> Mod Name: IMM32.DLL
-> Mod Name: hostfxr.dll
-> Mod Name: hostpolicy.dll
-> Mod Name: coreclr.dll
-> Mod Name: ole32.dll
-> Mod Name: combase.dll
-> Mod Name: OLEAUT32.dll
-> Mod Name: bcryptPrimitives.dll
-> Mod Name: System.Private.CoreLib.dll
...
************************************
Запуск и останов процессов программным образом
Финальными аспектами класса
System.Diagnostics.Process
Start()
Kill()
StartAndKillProcess()
На заметку! В зависимости от настроек операционной системы, касающихся безопасности для запуска новых процессов могут требоваться права администратора.
static void StartAndKillProcess()
{
Process proc = null;
// Запустить Edge и перейти на Facebook!
try
{
proc = Process.Start(@"C:Program Files (x86)MicrosoftEdge
Applicationmsedge.exe",
"www.facebook.com");