我正在尝试创建一个提供地震样式下拉式HUD控制台的应用程序。我可以让它显示和隐藏窗口,但我无法弄清楚如何在显示它之后将其设置为活动窗口。我使用Win API调用来显示和隐藏窗口。我试过SetForegroundWindow(IntPtr hWnd)和SetFocus(IntPtr hWnd)无济于事。有人有主意吗?
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);
}
答案 0 :(得分:3)
我在这里找到答案: How to show form in front in C#
winAPI方法对我来说无法正常工作,但确实如此:
form.TopMost = true;
form.TopMost = false;
我最初只是将TopMost设置为true,但是我遇到了显示在表单后面的对话框的问题。看起来将TopMost设置为true会将表单拉到前面并将其保留在那里。将其设置为false并不会将其推回但允许其他表单显示在前面。我仍然有焦点问题,所以我最终得到了以下内容:
form.Activate();
答案 1 :(得分:1)
试试这个(适合我):
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);
}
答案 2 :(得分:1)
您可以使用SetActiveWindow
winAPI方法。希望这会有所帮助...
答案 3 :(得分:-1)
你有没有理由不能实现自己的控制台窗口?我的意思是一个简单的表单,文本框设置为正确的样式。您可能比尝试使用'cmd'过程更能控制它的工作方式。
只是一个想法。