Giảm thiểu mọi trường hợp notepad không hoạt động trên windows 11 | Mã C#

lập trình


Tôi đang làm việc với mã C# để giảm thiểu tất cả các phiên bản đang mở của Notepad. Mã này hoạt động tốt trên Windows 10, nhưng khi tôi chạy cùng một exe với đặc quyền quản trị viên, nó chỉ thu nhỏ một phiên bản của Notepad (trong số mở 3..).

Mã của tôi cho việc này là như sau. Bất kỳ trợ giúp nào cũng được đánh giá rất cao. Cảm ơn

Những gì tôi đã thử:

C#
class Program
{
    private const int SW_SHOWNORMAL = 1;
    private const int SW_SHOWMINIMIZED = 2;
    private const int SW_SHOWMAXIMIZED = 3;

    [DllImport("user32.dll")]
    private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);

    [DllImport("user32.dll")]
    private static extern bool MinimizeWindow(System.IntPtr hwnd);

    static void Main(string[] args)
    {
        System.Diagnostics.Process thisProcess =
        System.Diagnostics.Process.GetCurrentProcess();
        System.Diagnostics.Process[] processes =
        System.Diagnostics.Process.GetProcessesByName("notepad");

        foreach (System.Diagnostics.Process process in processes)
        {
            if (process == thisProcess) 
                continue;

            System.IntPtr handle = process.MainWindowHandle;

            if (handle == System.IntPtr.Zero) 
                continue;

            IntPtr s1 = process.MainWindowHandle;
            ShowWindowAsync(s1, SW_SHOWMINIMIZED);
        }
    }
}

Giải pháp 2

Hãy xem trong Trình quản lý tác vụ, trên tab Chi tiết và bạn sẽ thấy rằng cho dù bạn có mở bao nhiêu CỬA SỔ Notepad thì cũng chỉ có một phiên bản của Notepad.exe và chỉ có một “MainWindowHandle”.

Trên Windows 10, sẽ có một phiên bản Notepad.exe CHO MỌI CỬA SỔ NOTEPAD, mỗi phiên bản có “MainWindowHandle” riêng.

Về cơ bản, bạn phải thực hiện một số công việc để tìm tất cả các cửa sổ con của Notepad và thu nhỏ từng cửa sổ đó. Không, không có gì trực tiếp trong .NET BCL sẽ làm điều đó cho bạn.

コメント

タイトルとURLをコピーしました