C#窗口句柄

C#窗口句柄在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口极小化为图标等。实际上许多WindowsAPI函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、

大家好,又见面了,我是你们的朋友全栈君。

在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口极小化为图标等。实际上许多 Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、光标、字体、菜单等。

  1. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

  2. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

  3.   Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

  4.   Private Const WS_EX_LAYERED = &H80000

  5.   Private Const GWL_EXSTYLE = (-20)

  6.   Private Const LWA_ALPHA = &H2

  7.   Private Sub Form_Activate()

  8.   On Error Resume Next

  9.   For i = 0 To 150 Step 2.5

  10.   SetLayeredWindowAttributes Me.hwnd, 0, i, LWA_ALPHA

  11.   DoEvents

  12.   Next i

  13.   End Sub

  14.   Private Sub Form_load()

  15.   Dim rtn As Long

  16.   rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE)

  17.   rtn = rtn Or WS_EX_LAYERED

  18.   SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn

  19.   SetLayeredWindowAttributes Me.hwnd, 0, 0, LWA_ALPHA

  20.   End Sub

 

 
  1. //获取窗口标题

  2. [DllImport("user32", SetLastError = true)]

  3. public static extern int GetWindowText(

  4. IntPtr hWnd,//窗口句柄

  5. StringBuilder lpString,//标题

  6. int nMaxCount //最大值

  7. );

  8.  
  9. //获取类的名字

  10. [DllImport("user32.dll")]

  11. private static extern int GetClassName(

  12. IntPtr hWnd,//句柄

  13. StringBuilder lpString, //类名

  14. int nMaxCount //最大值

  15. );

  16.  
  17. //根据坐标获取窗口句柄

  18. [DllImport("user32")]

  19. private static extern IntPtr WindowFromPoint(

  20. Point Point //坐标

  21. );

  22.  
  23. private void timer1_Tick(object sender, EventArgs e)

  24. {

  25. int x = Cursor.Position.X;

  26. int y = Cursor.Position.Y;

  27. Point p = new Point(x, y);

  28. IntPtr formHandle = WindowFromPoint(p);//得到窗口句柄

  29. StringBuilder title = new StringBuilder(256);

  30. GetWindowText(formHandle, title, title.Capacity);//得到窗口的标题

  31. StringBuilder className = new StringBuilder(256);

  32. GetClassName(formHandle, className, className.Capacity);//得到窗口的句柄

  33. this.textBox1.Text = title.ToString();

  34. this.textBox2.Text = formHandle.ToString();

  35. this.textBox3.Text = className.ToString();

  36. }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158985.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华为私有云的搭建方案_如何搭建私有云

    华为私有云的搭建方案_如何搭建私有云最近有个Team共享文档的需求。包括大文件,有个access文件超过500m。开始用百度网盘,发现只能分享,不能共享。试了几个其它网盘,广告超级多,但是都没有共享这个功能。基于此,找了几个私有云程序。最后选择了可道云。完美解决云共享。分享一下自己采坑经验:1.NextCloud支持Windows,Mac,Linux,iOS,Android平台,是OwnCloud的衍生版本,很不错的产…

    2022年6月16日
    63
  • asuswrt 单臂路由_OPENWRT-KOOLSHARE软路由,一级/单臂/二级/旁软路由设置单臂路由联网教程…

    asuswrt 单臂路由_OPENWRT-KOOLSHARE软路由,一级/单臂/二级/旁软路由设置单臂路由联网教程…【此文原创】此文基于单口软路由讨论一级/单臂路由LAN:IPV4设置除192.168.1.1之外和你局域网不冲突的地址,关闭桥接接口,物理设置eth0WAN:协议改成PPPOE,物理设置eth0二级/旁路由LAN:IPV4地址设置为上级路由网段地址,关闭DHCP。IPV4网关选择上级路由的网关地址。WAN:物理设置-桥接关掉,接口选择eth0-保存并应用客户端机:设置IP地址,网关为软路由地址,I…

    2022年5月16日
    59
  • 跨平台移动APP开发进阶(三):hbuilder+mui mobile app 开发心酸路

    跨平台移动APP开发进阶(三):hbuilder+mui mobile app 开发心酸路1.问题描述:在实现图片轮转时,若将mui(“#slider”).slider({interval:5000});置于图片加载之前,图片不会显示,解决措施:将其置于图片显示之后才会显示。2.问题描述:同上面的问题,会遇到报指针为null的异常。若要获取一个组件的id,可能带获取的组件还未加载,导致获取失败。解决措施:将获取组件id的js脚本

    2022年5月31日
    38
  • 算法 时间复杂度概念及案例

    算法 时间复杂度概念及案例通过时间复杂度可以判断程序算法过程的优势和劣势,提高运行性能

    2022年5月14日
    53
  • JDBC从入门到精通

    JDBC从入门到精通JDBC概念我们学习了数据库,数据库实现了数据的持久化,但我们最终要在程序里处理数据啊,那java代码中怎么去访问数据库读写数据呢?这就要用到sun公司设定的一套数据库标准了,这套标准就是JDBC(JavaDatabaseConnectivity)。但它只是规范,不做具体实现。于是数据库厂商又根据JDBC标准,实现自家的驱动Driver。如:mysql驱动com.mysql.cj.jdbc.Driver,Oracle的驱动oracle.jdbc.OracleDriver。有了这套解决方案,java

    2022年6月23日
    29
  • MATLAB 保存图片变黑色

    MATLAB 保存图片变黑色今天用MATLAB作图,碰到一个问题:想把结果保存成为图片,结果,失望,保存之后打开一片黑色。之后再试了几下,不论是jpg,bmp还是png都不行   只好Google,最后,总算找到答案,原来是着色属性的问题,修改其实很简单:              set(gcf,’Renderer’,’ZBuffer’)    这样,就把属性

    2025年11月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号