我试图阅读Acrobat Reader 10进程的MainWindowHanlde,以便可以设置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 reader 9上尝试了此操作,但得到了MainWindowHandle,但在acrobat reader 10上却不起作用

请帮忙
谢谢

最佳答案

我遇到了同样的问题,发现当以下属性为true时,没有MainWindowHandle,并且如果“主窗体”具有子窗口,则进程的MainWindowHandle将是子窗口句柄,而不是预期的主窗口。奇怪的!!!希望我能明白为什么。但是一旦找到了这个,我就用另一种方式解决了我的问题(就我而言,我真的不需要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)!

希望此信息对您有所帮助!

10-04 17:53