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 に答える