简体   繁体   English

C#主窗口和子窗口

[英]c# main window and child window

If I have a handler over a main window how can I handle the child windows? 如果我在主窗口上有一个处理程序,该如何处理子窗口? From processes i can't see the child windows, but on the desktop i see them. 从进程中,我看不到子窗口,但是在桌面上,我看到了它们。 Can someone help me to print all the child window that a main window has? 有人可以帮助我打印主窗口具有的所有子窗口吗?

Use System.Management;
//Return all processes
public static string ListAllProcesses()
{
    StringBuilder sbAllProcess = new StringBuilder();
    // list out all processes and write them into a stringbuilder
    ManagementClass MgmtClass = new ManagementClass("Win32_Process");

    foreach (ManagementObject mobject in MgmtClass.GetInstances())
    {
        sbAllProcess .Append("Name:\t" + mobject ["Name"] + Environment.NewLine);
        sbAllProcess .Append("ID:\t" + mobject ["ProcessId"] + Environment.NewLine);
        sbAllProcess .Append(Environment.NewLine);
    }

    return sbAllProcess .ToString();
}
//Return all applications
public static string ListAllApplications()
{
    StringBuilder sbAllApplication = new StringBuilder();

    foreach (Process runningProcess in Process.GetProcesses("."))
    {
        try
        {
            if (runningProcess .MainWindowTitle.Length > 0)
            {
                sbAllApplication .Append("Window Title:\t" + runningProcess .MainWindowTitle.ToString()+ Environment.NewLine);
                sbAllApplication .Append("Process Name:\t" + runningProcess .ProcessName.ToString() + Environment.NewLine);
                sbAllApplication .Append("Window Handle:\t" + runningProcess .MainWindowHandle.ToString() + Environment.NewLine);
                sbAllApplication .Append("Memory Allocation:\t" + runningProcess .PrivateMemorySize64.ToString() + Environment.NewLine);
                sbAllApplication .Append(Environment.NewLine);
            }
        }
        catch { }
    }
    return sbAllApplication .ToString();
}

Using pinvoke.net/default.aspx/user32/EnumChildWindows.html Enumchildwindows u will get to know handlers of child window of specific window 使用pinvoke.net/default.aspx/user32/EnumChildWindows.html Enumchildwindows您将了解特定窗口的子窗口的处理程序

MdiChildren will give you a set of all forms belonging to a particular form. MdiChildren将为您提供一组属于特定表单的所有表单。

Also you can get the forms using Application.OpenForms 您也可以使用Application.OpenForms获取表单

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM