当前位置: 首页 > news >正文

句柄到底是个啥?

文章目录

  • 1、什么是句柄?
  • 2、句柄与普通指针的区别?

1、什么是句柄?

句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量—引自科学百科 通过参考网上各路大神的解释,个人认为:句柄就是健康码,它的作用就是让你找到所需的对象去到了何处,因为你始终都可以根据健康码找到对象的所在地,然后找到对象给他做核酸检测。健康码(句柄值)是国家(操作系统)分给你的,你没有自定义的权利。 在操作系统中,我们想要操作一个对象,就要知道它的地址,但是对象的内存地址总是变化,因为在windows系统中的内存管理一般会将当前处于空闲状态的对象的内存释放掉,当需要访问的时候再重新提交分配物理内存,从而导致对象的物理地址是变化的。此时windows就搞了一个玩意—句柄,句柄用来管理对象的地址(句柄表),不管对象的地址如何变化,我都可以通过访问句柄来拿到对象的实时地址,进而操作对象。句柄值是操作系统给的,你不能定义。

2、句柄与普通指针的区别?

句柄更偏向于索引表,指针的所指物理内存地址的索引
指针指向系统中物理内存的地址,而句柄是windows在内存中维护的一个对象内存物理地址列表的整数索引,句柄是一种指向指针的指针。也就是管理指针(内存地址)的工具。
句柄的作用范围也是存在局限性的,你只能用句柄最终调用到对象,并作一些系统允许你做的事情,但是你拿到指针的话就能干任何事情了,比如破坏对象。当然,句柄的优点也是显而易见的,句柄很明显更方便管理,部分场景处理对象时比指针快。

句柄:就是用来维护进程或者系统范围内的一个标识。
就比如我们去访问一个文件的时候,同一时刻,只能有一个进程访问,不能有其他,这个句柄就是这个文件锁。
句柄是一个动态的地址,用来记录当前对象的分配,很明显就只有一个。
任何一个对象都有一个句柄。

C# 中因为没有指针 所以指的是windows窗口中(包括窗口本身,以及不可见的窗口?) 每个控件对应的一个找寻得到它们的地址(实际是内存指针) 以便编程时候能够迅速定位它们,设置或者获取这些控件的状态、值等操作。

WPF窗体下: 窗体:IntPtrhwnd=newWindowInteropHelper(this).Handle;控件:IntPtrhwnd=((HwndSource)PresentationSource.FromVisual(uielement)).Handle;// MainWindow.xaml.csprivatevoidButton_Click(objectsender,RoutedEventArgse){varwih=newSystem.Windows.Interop.WindowInteropHelper(this);varhWnd=wih.Handle;}
http://www.cnnetsun.cn/news/91810.html

相关文章:

  • 执行 install.sh 报错 `env: ‘bash\r‘: No such file or directory` 怎么解决?
  • Part 10|我给这套系统划的第一个边界
  • agent-zh.md
  • 为什么过滤 rtmpt 而不是 rtmp?
  • Navicat x 达梦技术指引 | 启用和配置AI助手
  • Transformer的注意力权重的理解
  • 解构 Codigger:从内核到无限生态的“进化阶梯”
  • 基于Python的高考志愿报名推荐系统源码设计与文档
  • 飞桨PaddlePaddle入门与核心实践
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十讲)
  • 热销榜单:2025年高口碑数字人推荐,解决你的选择难题!
  • 应“双碳”考核!安科瑞通信机房能耗监测方案,让PUE管控精准落地
  • 1天净流入10亿!A500ETF南方凭什么成为布局中国核心资产的优选?
  • Android 基础入门教程之RelativeLayout(相对布局)
  • 基于微信小程序的跑腿系统的设计与实现毕业设计项目源码
  • 基于SpringBoot的社区老年人健康知识阅读分享管理系统毕业设计项目源码
  • MySQL迁移达梦数据库,Quartz报错“无效的表或视图名”
  • Dify入门:搭建一个文件翻译智能体
  • 基于SpringBoot的金丰旺零售商经营平台系统毕业设计项目源码
  • Git:分布式版本控制的哲学、理论与创新
  • 农业产量预测的终极方案:R语言中XGBoost+随机森林+ARIMA融合技巧
  • 为什么90%的团队都选错了Dify排序算法?真相在这里!
  • 揭秘云原生Agent网络难题:如何高效配置Docker容器通信
  • 基于Python的电商用户购买行为数据分析系统设计与实现(源代码+文档+PPT+调试+讲解)
  • 为什么你的Dify模型加载总失败?这3个坑90%的人都踩过
  • ClaudeCode 实战指南(五):SubAgent 深度解析与专家团队构建
  • 【干货收藏】从零开始构建知识图谱:9大核心技术详解!
  • 智能算法与边缘计算融合:驱动下一代实时决策系统的技术范式革新
  • 为什么顶尖团队都在用Dify 1.7.0做音频转换?真相令人震惊
  • 【Dify 1.7.0音频转文字黑科技】:3大核心升级揭秘,效率提升90%的秘诀