none
无法获取win32进程的主窗体句柄 RRS feed

  • 问题

  • 为什么我用winform程序开启一个win32程序后,在该win32程序的Process的对象中的MainWindowHandle属性为0,

                    ProcessStartInfo info = new ProcessStartInfo(this.m_AppFilename);
                    info.UseShellExecute = true;
                    info.WindowStyle = ProcessWindowStyle.Minimized;
                    m_AppProcess = System.Diagnostics.Process.Start(info);
                    // Wait for process to be created and enter idle condition
                    m_AppProcess.WaitForInputIdle();
                   while(m_AppProcess.MainWindowHandle==IntPtr.Zero)//一直为空
                    {
                        if (!m_AppProcess.HasExited)
                        {
                            // Discard cached information about the process.
                            m_AppProcess.Refresh();//没有效果
                        }
                        else
                        {
                            break;
                        }
                    }


    2017年6月23日 3:31

全部回复

  • Hi ,

    感谢在MSDN论坛发帖。

    >>为什么我用winform程序开启一个win32程序后,在该win32程序的Process的对象中的MainWindowHandle属性为0

    你想获取的主窗口必须是当前具有焦点(TopLevel形式)的进程打开的窗口。只有当进程具有图形界面时,进程才具有与其关联的主窗口。如果关联进程没有主窗口,MainWindowHandle值为零。对于已隐藏的进程,也就是在任务栏中看不到的进程,该值也为零。

    建议你将WindowStyle 改为Normal或者Maximized,并保证你的Winform程序处于Active状态。

    希望对你有所帮助。

    Best Regards,
    Sera Yu


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.

    2017年6月23日 6:00