Microsoft Word Automation / interop Win32 API问题

时间:2012-07-11 11:31:38

标签: c# .net winapi interop ms-word

我正在尝试控制Word的窗口位置。

我的WinForms(C#)应用程序占用屏幕的下半部分并启动Word实例。我需要这个实例来占据屏幕的上半部分。

这不能通过互操作来控制,所以我设法获得Word实例的窗口句柄。然后我尝试以各种方式使用SetWindowPos,SetWindowsLong等,但没有任何明显的结果。

我没有重新发布错误的代码,而是希望重新开始,所以欢迎那些取得过类似成就的人提出任何建议。

1 个答案:

答案 0 :(得分:2)

您可以使用Application.Move方法。或直接设置Application.TopApplication.Left属性。你的代码可以是这样的:

private Word.Application WordApp = new Word.Application();

    ...

private void buttonClick(object sender, System.EventArgs e)
{
    if (this.openFileDialog.ShowDialog() == DialogResult.OK)
    {
        object fileName = openFileDialog.FileName;
        object visible = true;
        object missing = System.Reflection.Missing.Value;

        WordApp.Visible = true;
        Word.Document aDoc = 
                        WordApp.Documents.Open(ref fileName, ref missing, ref missing,
                                               ref missing, ref missing, ref missing,
                                               ref missing, ref missing, ref missing,
                                               ref missing, ref missing, ref visible);
        aDoc.Activate();
        WordApp.Top = 0;
    }
}

不要忘记将 Microsoft Word对象库添加到您的引用并使用相关的命名空间:

using Microsoft.Office.Interop.Word;
相关问题