我有一个表单应用程序,我希望它成为最顶层的。我用
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
这个函数,它工作正常。但是当任务管理器属性总是在顶部被检查时它失败了。任务管理器将显示为最顶层的窗口。 所以我担心的是,如果有任何方法可以实现它,或者我们不能与任务管理器一起完成它。它总是出现在顶部,或者我错过的任何其他东西,或者做错了。
答案 0 :(得分:2)
MSDN说HWND_TOPMOST
只是Places the window above all non-topmost windows.
换句话说,有两组窗口:非最顶层(通常)和最顶层,你只是将窗口发送到另一组。
如果还有其他最顶层的窗口(在您的情况下为=任务管理器),您可以像往常一样在非最顶层的窗口之间切换它们,并且它们将重叠,具体取决于当前活动的窗口。
如果您想强制您的窗口始终位于最顶层,我猜您必须注意停用窗口(WM_ACTIVATE
消息),然后按Z顺序移动窗口并关注您的窗口窗口返回 - 通过这种方式,您可以防止出现问题,例如让您的窗口唯一可见,但让键盘专注于另一个窗口。
答案 1 :(得分:0)
如果您只是希望您的应用程序始终位于其他应用程序的顶部,则可以尝试此操作。
private void timer1_Tick(object sender, EventArgs e)
{
this.TopMost = true;
}