0

我有这段代码,我想匹配任何 CaptionName,我真的不知道该怎么做,以及如何放置正则表达式或其他东西,因此它可以检查我想与 BringToFront 一起使用的任何 CaptionName方法..看看:

class Program
{
    [DllIport("User32.dll")]
    public static extern Int32 SetForegroundWindow(int hWnd);

    [DllImport("user32.dll")]
    public static extern int FindWindow(string lpClassName, string lpWindowName);

    private static void BringToFront(string className, string CaptionName)
    {
        SetForegroundWindow(FindWindow(className, CaptionName));
    }

    static void Main(string[] args)
    {    
        BringToFront("Notepad","#*#");
    }
}
4

1 回答 1

1

试试这个代码。可以通过过滤从Process.GetProcesses()获取的所有进程获取进程句柄,然后获取句柄。

调用 SetForegroundWindow 将它们显示到前台。

class Program
    {
        [DllImport("user32.dll", SetLastError = true)]
        static extern bool SetForegroundWindow(IntPtr hWnd);

        private static void BringToFront(string CaptionName)
        {
            foreach (Process p in Process.GetProcesses()
                                         .ToList()
                                         .FindAll(/*Write your rule here*/p => p.MainWindowTitle.Contains(CaptionName)))
            {
                SetForegroundWindow(p.MainWindowHandle);
            }
        }

        static void Main(string[] args)
        {
            BringToFront("Notepad");
        }
    }
于 2013-05-15T08:18:37.277 回答