c# - 如何将非托管应用程序窗口置于最前面,并使其成为(模拟)用户输入的事件窗口

标签 c# windows pinvoke foreground

我假设我需要使用 pinvoke,但我不确定需要调用哪些函数。

场景:遗留应用程序将运行,我将拥有该应用程序的句柄。

我需要:

  1. 将该应用程序置于顶部(在所有其他窗口之前)
  2. 使其成为事件窗口

需要调用哪些 Windows 函数?

最佳答案

如果您没有窗口句柄,请在之前使用它:

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

现在假设您有应用程序窗口的句柄:

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

如果另一个窗口有键盘焦点,这将使任务栏闪烁。

如果你想强制窗口到前面,使用ForceForegroundWindow (示例实现)。

关于c# - 如何将非托管应用程序窗口置于最前面,并使其成为(模拟)用户输入的事件窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228089/

相关文章:

windows - 在 IIS 中,如何为特定的 CGI 脚本设置环境变量

c# - 如何解锁 ConnectNamedPipe 和 ReadFile? [C#]

c# - P/Invoke C++ 函数后清理内存

c# - OOP 中的封装

c# - 如何解析和生成 ISO 8601 格式的 DateTime 对象

c# - 将带有路径查找的单击移动添加到我当前在 Unity 中的 2D 项目

python - 在 lxml 中使用 etree 时出错

java - 如何终止通常使用 ProcessBuilder 创建的进程

c# - C#中如何使用libFLAC读取FLAC标签

c# - 如何附加不是来自数据库的 Entity Framework 对象?