c# - 设置事件窗口

标签 c# winapi

我正在尝试制作一个提供地震风格下拉式 HUD 控制台的应用程序。我可以让它显示和隐藏窗口,但我不知道如何在显示后将其设置为事件窗口。我正在使用 Win API 调用来显示和隐藏窗口。我试过 SetForegroundWindow(IntPtr hWnd) 和 SetFocus(IntPtr hWnd) 无济于事。有人有主意吗?

http://pastebin.com/DgtJJGiv

public void ShowApp()
{
    IntPtr h = FindWindow(null, "C:\\Windows\\system32\\cmd.exe");
    ShowWindow(h, SW_SHOW);
    //EnableWindow(h, true);
    isHidden = false;
        // set focus to console window

    SetForegroundWindow(h);
    System.Diagnostics.Debug.WriteLine(h);
}

最佳答案

我在这里找到了答案: How to show form in front in C#

winAPI 方法对我来说工作不正常,但这确实有效:

form.TopMost = true;
form.TopMost = false;

我最初只是将 TopMost 设置为 true,但我遇到了对话框显示在表单后面的问题。似乎将 TopMost 设置为 true 会将表单拉到前面并将其保留在那里。将它设置为 false 不会将其推回但允许其他表单显示在前面。我仍然无法集中注意力,所以我最终采用了以下方法:

form.Activate();

关于c# - 设置事件窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6434475/

相关文章:

winapi - 在 Rust 中实现 IWbemObjectSink 接口(interface)

c# - EF Core中抽象通用DbContext类的设计

c# - 什么是 ASP.NET Web 服务请求生命周期?

c# - Repeater DataBound 事件中的匿名类型

c# - 使用 SetParent 窃取另一个进程的主窗口但保持消息循环独立

c++ - WM_INPUT 有缺陷

c# - 如何捕获另一个程序的异常(用于日志记录)?

c - 掌握Windows 10的声音管理

c# - 使用 Selenium WebDriver C# 最大化 Firefox 的浏览器窗口

c# - 匹配字符串中的模式