为什么此过程适用于记事本,但不适用于Microsoft Access

时间:2012-07-20 14:56:44

标签: .net winforms ms-access pinvoke panel

我正在尝试在Luke Quinane上实现this question的答案,以便与Microsoft Access一起使用。

我正在使用的代码正是在答案中发布的代码,但我为了方便起见将其放在下面。可以说,我的Windows窗体包含一个面板和一个按钮:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Process p = Process.Start("MSACCESS.exe");
        p.WaitForInputIdle();
        SetParent(p.MainWindowHandle, panel1.Handle);

    }

    [DllImport("user32.dll")]
    static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}

Microsoft Access启动正常,但每当我尝试将其放置在面板中时它就会消失。

每当我用MSACCESS.exe替换notepad.exe时,程序就会按预期使用记事本。

为了让此过程与Microsoft Access一起使用,我还需要做些什么吗?

0 个答案:

没有答案