/获取当前系统正在运行的程序
            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等得不到。为什么。请大师们指点。
还有就是能不能提供下代码。我是初学者。谢谢。

解决方案 »

  1.   

    参考如下代码:
    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));
        }}
      

  2.   

    谢 zswang 给 的代码非常全。谢谢