• c# 判断窗体是否永在最前(TopMost),调用windows API


      许多程序都可以把自身的窗体设为最前显示状态,这个可以参考博客c#让窗体永在最前 调用windows api 将窗体设为topmost。那么如何判断桌面上的一个窗体是否为最前显示状态呢,不光是自己的程序,还包括其它程序。我们可以通过调用Windows Api的GetWindowLong方法判断。

      GetWindowLong是一个Windows API函数。该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。

      函数原型:LONG GetWindowLong(HWND hWnd,int nlndex);

      参数说明:

        hWnd:窗口句柄及间接给出的窗口所属的窗口类。

        nIndex:指定要获得值的大于等于0的值的偏移量。有效值的范围从0到额外窗口内存空间的字节数一4例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要获得任意其他值,指定下列值之一:

          GWL_EXSTYLE(-20):获得扩展窗口风格。

          GWL_HINSTANCE(-6):获得应用实例的句柄。

          GWL_HWNDPARENT(-8):如果父窗口存在,获得父窗口句柄。

          GWL_ID(-12):获得窗口标识。

          GWL_STYLE(-16):获得窗口风格。

          GWL_USERDATA(-21):获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。

          GWL_WNDPROC(-4):获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用CallWindowProc函数调用窗口过程。

      返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。

      代码如下:

      public class CheckTopMost

      {
        private const int WS_EX_TOPMOST = 0x00000008;
        [DllImport("user32.dll", SetLastError = true)]
        public static extern int GetWindowLong(IntPtr hWnd, int nIndex);

        /// <summary>
        /// 判断窗口是否为TopMost
        /// </summary>
        /// <param name="hWnd"></param>
        /// <returns></returns>
        public static bool CheckIsTopMost(IntPtr hWnd)
        {
          int style = GetWindowLong(hWnd, WS_EX_TOPMOST);
          style = style & WS_EX_TOPMOST;
          if (style == WS_EX_TOPMOST)
          {
            return true;
          }
          return false;
        }
      }

  • 相关阅读:
    酒店预订管理系统
    毕业论文管理系统
    酒店预订管理系统
    闪屏+引导页
    android编程测试
    测试用例
    ER图
    软件工程作业
    毕业论文管理系统
    酒店管理系统
  • 原文地址:https://www.cnblogs.com/moonlight-zjb/p/3648382.html
Copyright © 2020-2023  润新知