विंडोज़ 11 पर काम न करने वाले नोटपैड के सभी उदाहरणों को न्यूनतम करें | सी# कोड


मैं C# कोड पर काम कर रहा हूं जो नोटपैड के सभी खुले इंस्टेंस को न्यूनतम कर देता है। यह कोड विंडोज़ 10 पर ठीक काम करता है, लेकिन जब मैं उसी exe को व्यवस्थापक विशेषाधिकार के साथ चलाता हूं, तो यह नोटपैड के केवल एक उदाहरण को छोटा कर देता है (ओपन 3 में से…)।

इसके लिए मेरा कोड इस प्रकार है। कोई भी मदद बहुत ही सराहनीय होगी। धन्यवाद

मैंने क्या प्रयास किया है:

सी#
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);
        }
    }
}

समाधान 2

कार्य प्रबंधक में विवरण टैब पर देखें, और आप पाएंगे कि चाहे आपने कितने भी नोटपैड विंडो खोले हों, Notepad.exe का केवल एक उदाहरण है, और केवल एक “मेनविंडोहैंडल” है।

विंडोज़ 10 पर, प्रत्येक नोटपैड विंडो के लिए Notepad.exe का एक उदाहरण होगा, प्रत्येक का अपना “मेनविंडोहैंडल” होगा।

मूल रूप से, आपको नोटपैड की सभी चाइल्ड विंडो को ढूंढने और उनमें से प्रत्येक को छोटा करने के लिए कुछ काम करना होगा। नहीं, .NET BCL में सीधे तौर पर ऐसा कुछ भी नहीं है जो आपके लिए ऐसा करेगा।

コメント

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