如何在应用程序外部的窗口上设置“always on top”标志/设置?

时间:2010-01-28 19:47:42

标签: c# winapi

是否有一种托管方式可以在我的应用程序外部的窗口上设置always on top标志/设置,还是需要P / Invoke本机功能?

如果P / Invoke是唯一的方法是什么是所需的函数调用以及从哪个dll开始?

2 个答案:

答案 0 :(得分:8)

自从提出问题以来,我一直在研究这个问题,并且看到了如何通过在'user32.dll'中调用SetWindowPos来实现这一目标的好例子。如果有效,我会回来接受这个答案。

    [DllImport("user32.dll")]
    static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

    static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);

    const UInt32 SWP_NOSIZE = 0x0001;
    const UInt32 SWP_NOMOVE = 0x0002;
    const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;

    public static void MakeTopMost (IntPtr hWnd)
    {
        SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
    }

答案 1 :(得分:-1)

简单答案:

        TopMost = true;