我有一个始终位于顶部的工具栏(topmost = true),但是当我最大化其他程序时,它们的窗口顶部隐藏在它后面。我希望他们在我的工具栏下方最大化,这样我就可以关闭/最小化它们等等......就像一个颠倒的任务栏,从字面上改变屏幕工作区域......
这可能吗?我在“开罗壳牌”中看到过
我认为您无法通过使用 Form 的 TopMost 属性来实现。相反,您可能需要使用SetWindowPos () WIN32 API 调用
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, SetWindowPosFlags uFlags);
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
如果您想在桌面上为您的程序保留一个区域并让所有其他程序在最大化时不使用该区域,那么您必须使用 API SHAppBarMessage将您的应用程序注册到 Window 的应用程序栏列表
我还没有在.Net 中找到任何好的代码来做到这一点,但如果你用谷歌搜索它,也许你会很幸运。
这里有一个: http ://www.tek-tips.com/viewthread.cfm?qid=1202570&page=1