gpt4 book ai didi

.net - 将窗口置于无焦点的前面

转载 作者:可可西里 更新时间:2023-11-01 09:30:36 25 4
gpt4 key购买 nike

我的 .NET 应用程序在后台运行,偶尔会创建并显示一个表单。该表单应该在所有其他窗口上方可见,但没有焦点。

我的第一个方法是设置表单的 TopMost 属性,但在很多情况下都失败了,原因我无法解释。

然后我尝试在 Shown 事件处理程序中调用 BringToFront,但那没有做任何事情。

我还尝试了 BringWindowToTop API,它返回 true(= 成功),但没有结果。

现在我坚持使用 SetForegroundWindow,它可以工作,但也会将焦点放在窗口上(应该如此)。

如有任何建议,我们将不胜感激。

(另外,我可以毫无问题地窃取焦点是正常的吗?)

最佳答案

这可能对您有帮助:

[DllImport("user32.dll")]
public static extern bool SetWindowPos (IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
void Exmpl() {
IntPtr HWND_TOPMOST = new IntPtr(-1);
uint SWP_NOACTIVATE = 0x0010;
uint SWP_NOMOVE = 0x0002;
uint SWP_NOSIZE = 0x0001;
SetWindowPos(form.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}

关于.net - 将窗口置于无焦点的前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com