04
2017
07

使用API置顶窗体

语言:C#

场景:设置前置窗体

方式一:设置窗体自带TOPMOST属性。不做详解。

方式二:通过系统API函数FindWindowEx、SetWindowPos结合进行实现。

示例:以系统消息窗口为例。

声明:

[DllImport("user32.dll", SetLastError = true)]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, SetWindowPosFlags uFlags);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

常量:

public const int HWND_TOP = 0;
public const int HWND_BOTTOM = 1;
public const int HWND_TOPMOST = -1;
public const int HWND_NOTOPMOST = -2;
private enum SetWindowPosFlags : uint
{  
   IgnoreMove = 0x0002,  
   IgnoreResize = 0x0001
}

使用:

IntPtr _hwd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "#32770", "");
if (_hwd != IntPtr.Zero)
{    
    SetWindowPos(_hwd, new IntPtr(HWND_TOPMOST), 0, 0, 0, 0,SetWindowPosFlags.IgnoreResize | SetWindowPosFlags.IgnoreMove);
}


下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。