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. }

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • NTP 时间服务器「建议收藏」

    NTP时间服务器,为客户机提供标准时间原理:NTP(NetworkTimeProtocol,网络时间协议)是用来使计算机时间同步的一种协议。它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正1、客户端安装chrony软件与NTP服务器沟通]#yum-yinstallchrony2、修改配置文件/etc/chrony.conf指定服务端…

  • 怎么看idea是否激活_最新在线免费激活

    (怎么看idea是否激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlCJM5ZJBPHS-eyJsaWNlbnNlSWQi…

  • Charles抓包工具简单教程

    Charles抓包工具简单教程为什么使用charles-windows在实际开发、测试中需要代理截取app的网络请求报文来快速定位问题,https双向认证的APP越来越多,fiddler在这方面并不好用。由于windows系统较多,编写此博客作为windows版的使用指南,其中包含了一些简易的使用,安装hhtps证书抓包,常用的设置,以及弱网测试,下列都会详细讲解,内容为本人的测试经验,不足之处还望补充。所需材料·…

  • pytorch实现ShuffleNet「建议收藏」

    pytorch实现ShuffleNet「建议收藏」ShuffleNet是由2017年07月发布的轻量级网络,设计用于移动端设备,在MobileNet之后的网络架构。主要的创新点在于使用了分组卷积(groupconvolution)和通道打乱(channelshuffle)。分组卷积和通道打乱分组卷积分组卷积最早由AlexNet中使用。由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把特征图分给多…

  • 程序员:我终于知道post和get的区别

    程序员:我终于知道post和get的区别是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎

  • Unity 角色控制器重复使用Ragdoll布娃娃系统,动画控制和布娃娃状态切换

    Unity 角色控制器重复使用Ragdoll布娃娃系统,动画控制和布娃娃状态切换大家好,今天开发游戏的时候做了Ragdoll相关的功能,于是写写心得。如果要在单一物体重复使用Ragdoll布娃娃系统,那我们需要对物体设置两个状态,一个是正常状态,受动画系统控制,一个是布娃娃状态,受布娃娃节点控制。(Unity开发环境2018.4LTS)预览效果:分为几个部分:首先是初始化,我们要遍历角色身体上的所有ragdoll并存储。publicLis…

发表回复

您的电子邮箱地址不会被公开。

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