есть код на C#
class Program
{
static void Main(string[] args)
{
int id = Convert.ToInt32(Console.ReadLine());
Process proc = System.Diagnostics.Process.GetProcessById(id);
proc.Refresh();
Console.WriteLine(proc.Handle);
Console.ReadKey();
}
}
По идее должно в консоли выводить хэндл процесса с введённым PId-ом, но что-то мне кажется что оно выдаёт не хэндл. Т.к. для одного и того же процесса может выдовать разные хэндлы, или может выдовать одинаковые хэндлы для разных процессов. Вопрос, правильно ли я всё делаю?
(P.S. C# я ещё только активно учу)
14 января 2009 в 6:01
using
System;
using System.Diagnostics;
public class EnumProcess
{
public static void Main()
{
Process[] arrProcess = Process.GetProcesses();
if (arrProcess == null)
{
Console.WriteLine("Unable to get process list!");
return;
}
Console.WriteLine("{0} processes enumerated.",arrProcess.Length);
foreach (Process proc in arrProcess)
Console.WriteLine("Process ID {0}, Handle: {1}", proc.Id, proc.Handle);
}
}
14 января 2009 в 0:04
Из ремарки в MSDN к проперти Handle:
This process handle is private to an application–in other words, process handles cannot be shared. A process also has a process Id which, unlike the Handle, is unique and, therefore, valid throughout the system.
Может собака тут порылась? Как я понимаю, значение хэндла процесса свое для каждого приложения.