把话带到前面

时间:2013-12-19 14:00:06

标签: c# ms-word

我希望Word应用程序出现在前面,请参阅下面的代码:

string caption = wordApp.Caption;
IntPtr handler = FindWindow(null, caption);
SetForegroundWindow(handler);
wordApp.Visible = true;

我得到的错误是:

Error CS0103: The name 'FindWindow' does not exist in the current context  
Error CS0103: The name 'SetForegroundWindow' does not exist in the current context

我想我错过了一个引用,即使编译器没有这么说。我是对的吗?

3 个答案:

答案 0 :(得分:2)

由于您使用的是C#,请使用Process.GetProcessesByName(),如下所示:

Process[] processes = Process.GetProcessesByName("WINWORD");
SetForegroundWindow(processes[0].Handle);

要使用SetForegroundWindow(),您必须拥有:

[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);

答案 1 :(得分:1)

这可能对您的问题有很大帮助:FindWindow MSDN link

包含它的库位于User32.lib

答案 2 :(得分:1)

您需要在使用它们之前声明您的函数,我假设您要调用Windows API:FindWindow和SetForeGroundWindow。

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);

您可以在MSDN文档中找到更多示例。