读书人

获得所有进程的标题的有关问题

发布时间: 2011-12-24 23:03:24 作者: rapoo

获得所有进程的标题的问题?
/获取当前系统正在运行的程序
string MyInfo = "当前系统正在运行的程序包括:\n";
Process[] MyProcesses = Process.GetProcesses();
foreach (Process MyProcess in MyProcesses)
{
if (MyProcess.MainWindowTitle.Length > 0)
MyInfo += MyProcess.MainWindowTitle+"\n";
}
MessageBox.Show(MyInfo, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
隐藏窗体的标题怎么得不到。
例如 讯雷 QQ等得不到。为什么。请大师们指点。
还有就是能不能提供下代码。我是初学者。谢谢。

[解决办法]
参考如下代码:

C# code
using System.Runtime.InteropServices;private const int MAX_PATH = 260;private struct PROCESSENTRY32{    // data members    public uint dwSize;    public uint cntUsage;    public uint th32ProcessID;    public uint th32DefaultHeapID;    public uint th32ModuleID;    public uint cntThreads;    public uint th32ParentProcessID;    public int pcPriClassBase;    public uint dwFlags;    [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_PATH)]    public byte[] szExeFile;}private const int TH32CS_SNAPPROCESS = 0x00000002;[DllImport("kernel32")]private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processID);[DllImport("kernel32")]private static extern bool Process32First(IntPtr handle, ref PROCESSENTRY32 procData);[DllImport("kernel32")]private static extern bool Process32Next(IntPtr handle, ref PROCESSENTRY32 procData);[DllImport("kernel32")]private static extern bool CloseHandle(IntPtr handle);private void button1_Click(object sender, EventArgs e){    IntPtr vHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);    PROCESSENTRY32 vProcessEnter = new PROCESSENTRY32();    vProcessEnter.dwSize = (uint)Marshal.SizeOf(typeof(PROCESSENTRY32));    if (Process32First(vHandle, ref vProcessEnter))    {        do        {            int j = 0;            for (int i = 0; i < vProcessEnter.szExeFile.Length; i++)                if (vProcessEnter.szExeFile[i] == 0)                {                    j = i;                    break;                }            Console.WriteLine("进程ID:{0},进程文件名:{1}",                 vProcessEnter.th32ProcessID,                Encoding.Default.GetString(vProcessEnter.szExeFile, 0, j));        }        while (Process32Next(vHandle, ref vProcessEnter));    }} 

读书人网 >C#

热点推荐