c # - Skjul flere vinduer efter Process

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en proces, og jeg vil gerne skjule vinduet.


Det virker godt, hvis processen kun har et vindue.


Men hvis der er en hurtig dialog eller en advarselsdialog eller et andet undervindue, skjuler skjulmetoden kun hovedvinduet, ikke dialogen ...


Kan du hjælpe mig med at skjule alle vinduer i en proces, tak?


Mange tak


Dette er min kode:


[DllImport("user32.dll")]
private static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow);


    public void Show()
    {
        ShowWindow(\_processHwnd, SwShow);
    }

    public void Hide()
    {
        Process[] processRunning = Process.GetProcesses();

        foreach (Process pr in processRunning)
        {

            if (pr.Id == \_process.Id)
            {
                \_processHwnd = pr.MainWindowHandle;
            }
        }

        ShowWindow(\_processHwnd, SwHide);
    }

Bedste reference


Du skal bruge lidt mere af Win32 API'en via P/påberåbe sig for at få vindueshåndtagene til de andre vinduer på topniveau.



  • Ring til GetWindowThreadProcessId() for at få tråd-id'et til hovedvinduet.

  • Ring til EnumThreadWindows() for at opregne alle vinduets øverste vinduer.



Det er muligt, at der er vinduer forbundet med en anden tråd i processen, men sandsynligheden heraf er forsvindende små. [4] [5]