c# - Microsoft Word 自动化/互操作 Win32 API 问题

标签 c# .net winapi interop ms-word

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

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

这无法通过互操作进行控制,因此我设法获取 Word 实例的窗口句柄。然后我尝试以各种方式使用SetWindowPos、SetWindowsLong等,但没有任何可见的结果。

我不想再次发布有缺陷的代码,而是想要一个新的开始,因此欢迎已经取得此类成就的人们提出任何建议。

最佳答案

您可以使用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;

关于c# - Microsoft Word 自动化/互操作 Win32 API 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431724/

相关文章:

c++ - 在哪里可以找到构建 DirectShow BaseClasses 的项目?

windows - XP 系统上的 GetProductInfo

.net - 控制 dotnet pack 项目引用的版本约束

c# - 需要验证配置属性 - 必须是 20 位数字

c# - 在 Using 语句中捕获异常

c# - 什么是 deps.json,如何让它使用相对路径?

c# - 在 C# 中将每个像素 2 个字节的 MONO-16 位图像转换为每个像素 1 个字节的 MONO-16 位

.net - 什么是都柏林?它与 WCF 有何关系?

c++ - __finally 应该在 EXCEPTION_CONTINUE_SEARCH 之后运行吗?

c# - FluentValidation 调用规则集和通用规则