阅读MainWindowHandle For Process

时间:2011-07-06 12:19:19

标签: c# wpf adobe-reader

我试着阅读MainWindowHanlde对于Acrobat Reader 10进程,所以我可以使用SetParent API 我试过这个

private Process pDocked;
private IntPtr hWndDocked;
pDocked = Process.Start(path, PDFPath);
while (hWndDocked == IntPtr.Zero)
{
    pDocked.WaitForInputIdle(1000);
    pDocked.Refresh();
    if (pDocked.HasExited)
    {
        return;
    }
    hWndDocked = pDocked.MainWindowHandle;
}

,结果是hWndDocked = 0 即使我在acrobat阅读器9上试过这个,我得到了MainWindowHandle,但它在acrobat reader 10上没有用

请帮忙 谢谢

1 个答案:

答案 0 :(得分:1)

我有同样的问题,并发现当以下属性为true时,没有MainWindowHandle,如果“main form”有子窗口,那么进程的MainWindowHandle将是子窗口句柄而不是预期的main窗口。奇怪的!!!希望我能理解为什么。但是一旦我发现这个,我就用另一种方式解决了我的问题(在我的情况下,我并不真的需要MainWindowHandle)!

以下时间:

public frmMain()
        {
            InitializeComponent();
            this.ShowInTaskbar = false;
            this.ShowIcon = false;
        }

没有MainWindowHandle(= 0)!!

如果你创建子窗口,在这种情况下,进程的MainWindowHandle将是frmLogon的句柄:

private void frmMain_Load(object sender, EventArgs e)
        {
            frmLogon frm = new frmLogon();
            frm.Show();
        }

将进程的frmLogon和MainWindowHandle关闭回零(= 0)!!

希望这些信息有用!