设置活动窗口

本文关键字:窗口 活动 设置 | 更新日期: 2023-09-27 18:00:02

我正在尝试制作一个应用程序,该应用程序提供地震风格的下拉式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);
}

设置活动窗口

我在这里找到了答案:如何在C#中显示表单

winAPI方法对我来说并不正确,但它确实起了作用:

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

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

form.Activate();

您可以使用SetActiveWindow winAPI方法。希望这能帮助。。。

试试这个(对我有用):

public static void ShowApp()
{
    IntPtr h = FindWindow(null, "C:''Windows''system32''cmd.exe");
    ShowWindow(h, ShowWindowCommands.Show);
    SetForegroundWindow(h);
    SetFocus(h);
    System.Diagnostics.Debug.WriteLine(h);
}

您为什么不能实现自己的控制台窗口?我的意思是一个简单的表单,其中的文本框设置为正确的样式。与尝试使用"cmd"进程相比,您可能更能控制它的工作方式。

只是一个想法。