c# - FindWindow 和 SetForegroundWindow 替代品?

标签 c# .net process

我正在寻找使用 FindWindow()SetForegroundWindow() 切换到不同应用程序的旧 User32.dll 版本的替代方案.

我确实找到了使用 Process.GetProcessesByName() 的第一个替代方法,但我没有看到切换(设置事件/前景)到该应用程序的相应方法。

有没有一种方法可以不使用 User32.dll方法来做到这一点?

感谢您的帮助。

编辑

虽然这不是我要找的答案,但我接受了@Sorceri 的回答。

最佳答案

回答:没有

但是,为了帮助下一个寻找窗口并从 C# 激活它的好奇者,您必须执行以下操作:

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

void ActivateApp(string processName)
{
    Process[] p = Process.GetProcessesByName(processName);

    // Activate the first application we find with this name
    if (p.Count() > 0)
        SetForegroundWindow(p[0].MainWindowHandle);
}

例如,要将记事本置于最前面,您可以调用:

ActivateApp("notepad");

作为旁注 - 对于那些试图将应用程序中的窗口 带到前台的人,只需调用 Activate() method .

关于c# - FindWindow 和 SetForegroundWindow 替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11512373/

相关文章:

c# - WebBrowser.DrawToBitmap 留下白色像素

.net - ASP.NET Web 表单 HTML 标记中的自定义属性

c - 在为子进程中的信号处理程序提供服务后,通知父进程有关子进程的信号

c# - 从 C# 中进程的 StandardOutput 读取数据时有最大超时

C# - 如何使用 TaskSchedular 类列出特定用户的计划任务

c# - 在 Visual Studio 2012 中调试 .NET Framework 源代码?

c# - 是否有一个版本的 Tuple 类的 Items 属性不是只读的并且可以设置?

.net - 使用.Net Entity Framework 删除具有子关系的实体问题

c++ - 如何使用 C++ 测量 Linux 中切换进程上下文的时间?

c# - Windows Phone 项目不支持 VideoBrush