如何将我的应用程序窗口置于前面?例如,我的应用程序需要注意.
这是我的个人计划.我需要这个功能.
这就是我得到的.但它没有 100%的工作时间.
public void BringToFrontToEnterCaptha()
{
if (InvokeRequired)
{
Invoke(new Action(BringToFrontToEnterCaptha));
}
else
{
this.TopMost = true;
this.Focus();
this.BringToFront();
this.textBox1.Focus();
this.textBox1.Text = string.Empty;
System.Media.SystemSounds.Beep.Play();
}
}
public void BringToBackAfterEnterCaptha()
{
if (InvokeRequired)
{
Invoke(new Action(BringToBackAfterEnterCaptha));
}
else
{
this.TopMost = false;
}
}
Run Code Online (Sandbox Code Playgroud)
我从背景工作者那里打电话给他们.
BringToFrontToEnterCaptha();
while (!ready)
{
Thread.Sleep(100);
}
BringToBackAfterEnterCaptha();
Thread.Sleep(300);
Run Code Online (Sandbox Code Playgroud)
按"接受"按钮后,bool ready设置为true.
我工作得很好,但并不总是.
我正在用C#编写Windows窗体应用程序.我需要能够把它带到前台.经过一些谷歌搜索和实验,我有一个看起来非常hacky的工作解决方案.
如果有的话,我想知道这样做的优雅方式.我需要应用程序恢复并前往前台,无论它是最小化,还是最小化,但在后台.
当前代码如下所示:
WindowState = FormWindowState.Minimized;
WindowState = FormWindowState.Normal;
BringToFront();
Focus();
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个提供地震式下拉式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);
}
Run Code Online (Sandbox Code Playgroud) 所以,是的,我发现自己处于一个可疑的位置,即执行一个SwitchToThisWindow
强制我的窗口到前面的调用.我同意,它并不理想,但并不总是可以反对别人认为必要的产品"功能".
现在,我认为SwitchToThisWindow
是一个胜利的AttachThreadInput
黑客做强制窗口切换,因为它不太可能死锁,应该SwitchToThisWindow
被删除,或停止运作我不会抱怨.
但是,SwitchToThisWindow
除了在为fAltTab参数传递FALSE时将目标窗口置于顶部,并且如果传递TRUE则不执行任何操作时,会产生令人遗憾的副作用,即将当前前景窗口推送到z顺序的底部.
如何避免这种"推动当前活动到z-bottom"的行为而不诉诸AttachThreadInput
?
或者,MS可以删除AttachThreadInput
作为一个可行的解决方法,我可以告诉我的经理,实际上,不可能,实际上是不可能的.
I am developing a windows form application in C#. This application shows some text on the Form when a special kind of external event occurs (For example suppose that I want to write "Mouse is on upper line" on form when in the mouse's position y=0). I need to bring the Form to top of every other window when the event occurs.