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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机如何修改任务管理器,win7如何更改任务管理器快捷键_win7更改任务管理器快捷键的教程…

    计算机如何修改任务管理器,win7如何更改任务管理器快捷键_win7更改任务管理器快捷键的教程…我们在打开任务管理器的时候,通常是CTRL+ALT+DEL就可以快速打开,不过有许多用户装完win7系统之后,发现任务管理器快捷键变成了Ctrl+Shift+Esc,这让用户们用着很不习惯,其实我们也可以自己手动更改快捷键,现在给大家带来win7更改任务管理器快捷键的教程。具体步骤如下:1、在“开始”菜单的搜索框输入指令gpedit.msc,回车打开Win7系统的组策略编辑器。2、在组策略编辑器里…

    2022年6月18日
    34
  • MCTS学习笔记「建议收藏」

    MCTS学习笔记「建议收藏」MCTS树学习MCTS,即蒙特卡罗树搜索,是一类搜索算法树的统称,可以较为有效地解决一些搜索空间巨大的问题。如一个8*8的棋盘,第一步棋有64种着法,那么第二步则有63种,依次类推,假如我们把第一步棋作为根节点,那么其子节点就有63个,再往下的子节点就有62个……如果不加干预,树结构将会繁杂,MCTS采用策略来对获胜性较小的着法不予考虑,如第二步的63种着法中有10种是不可能胜利的,那么这十个…

    2022年6月28日
    22
  • python正则匹配中文或数字_Python匹配中文的正则表达式

    python正则匹配中文或数字_Python匹配中文的正则表达式正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。Python正则表达式简介正则表达式是一个特殊的字符序列,它能帮助你方…

    2022年7月25日
    12
  • sudo yum install glibc.i686 linux,yum安装glibc-devel.i686的问题经历[通俗易懂]

    sudo yum install glibc.i686 linux,yum安装glibc-devel.i686的问题经历[通俗易懂]1.yuminstallglibc-devel.i686由于磁盘空间有限,执行过程中中断2.yuminstallglibc-devel.i686错误如下:Thereareunfinishedtransactionsremaining.Youmightconsiderrunningyum-complete-transactionfirsttofinishthem….

    2022年6月7日
    152
  • idea汉化之后打不开settings解决方法

    idea汉化之后打不开settings解决方法用解压软件打开汉化包,进入messages目录,找到settings的配置文件:VcsBundle.properties以及定位的配置文件:UIBundle.properties将这两个文件删掉重新启动IDEA即可完美解决,感谢这位前辈。…

    2022年5月30日
    43
  • pycharm多行代码同时缩进快捷键:Tab键,一次缩进四个字符

    pycharm多行代码同时缩进快捷键:Tab键,一次缩进四个字符pycharm使多行代码同时缩进鼠标选中多行代码后,按下Tab键,一次缩进四个字符

    2025年6月20日
    2

发表回复

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

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