什么是句柄?句柄及其作用是什么?_新动态
2023-03-03 11:39:00来源:环球传媒网
关于什么是句柄(编译原理句柄是什么意思)的知识大家了解吗?以下就是小编整理的关于什么是句柄(编译原理句柄是什么意思)的介绍,希望可以给到大家一些参考,一起来了解下吧!
什么是句柄(编译原理句柄是什么意思)
(资料图片仅供参考)
小编工作的单位性质偏向于服务制造。大家都知道,中国的高端装备基本都依赖进口,而其自带CAM软件一般都是全封闭的,不开放API接口。但是在工业互联网时代,设备联网,生产数据上云已经是大势所趋。那么,如何在国外技术封锁的情况下实现第三方软件的数据获取呢?
在Windows系统下,有一个东西叫句柄,它是Windows编程的基础,只要是运行在Windows上的软件都绕不开它。本文就带大家学习如何利用底层句柄来实现第三方软件的交互。
句柄及其作用关于句柄的官方解释就不在此处过多提及,一般刚接触这个概念的人也看不懂。掌握句柄只需要理解这几点:
1、句柄不是什么玄乎的东西,它只是一个4字节(64系统下为8字节,后续文章都以32位来展开文章)的数值。但是它是唯一的,系统在启动时会建立一个句柄表,程序在Windows系统上运行时由系统自动分配给每一个对象,例如:窗体句柄、窗体控件句柄(输入框、按钮)、文件句柄等。
2、句柄单独存在于一块固定的区域,由于对象在内存中的地址可能会实时变化,但是系统会将这个变化的地址通过唯一不变的句柄绑定好,以不变应万变。
3、你可以将其理解成类似指针,通过它你能找到程序中的每一个对象。
4、虽然句柄类似指针,可以通过句柄找到对应的对象,但是你却不能像使用指针那样使用句柄,必须通过系统封装的API去使用。
如下图,是通过spy++查看GifCam(一个第三方gif制作小软件)各控件的句柄。图中Handle:000A07F0就是Rec按钮的句柄,获得了它的句柄,就可以通过系统API控制按钮的各项功能,比如单击开始录制。
spy++查看GifCam
类比理解如果上述表述大家还不能理解的话,请看类比理解:
大家都看过古装电视剧吧?在古代,每个奴隶身上都会被烙上一个奴隶印记,并且每个印记的编号不同。奴隶主在管理奴隶时,都是通过印记来管理的。但是每个奴隶本身也都是有名字的。类比到句柄就可以这样理解:奴隶这个实物就是对象,他的名字就是他在计算机中的地址(名字可以随意变,奴隶想更名改姓重新开始生活,但是奴隶主会愿意吗?),奴隶印记就是句柄(不管你怎么更名改姓,只要这个奴隶印记在,你就跑不掉)。
图示理解:
句柄示意图
句柄实际应用前文讲了很多关于句柄理解的内容,此处开始回到实际项目中,一起探究句柄在实际项目中如何发挥作用。
需求:如下图,需要实时获取图中振幅和相位的值。
需获取数据的窗体
程序设计思路:
程序设计思路
利用CSharp实现上述功能需要引入usingSystem.Runtime.InteropServices;和using System.Diagnostics;
System.Diagnostics:负责进程相关
System.Runtime.InteropServices:DllImport特性,负责调用系统API。
代码实现:
classProgram{//系统API//通过窗体标题寻找窗体句柄[DllImport("user32.dll",EntryPoint="FindWindow")]publicstaticexternIntPtrFindWindow(stringlpClassName,stringlpWindowName);//遍历主窗体下的所有句柄(各控件对象)[DllImport("user32.dll",EntryPoint="FindWindowEx")]publicstaticexternIntPtrFindWindowEx(IntPtrhWnd1,IntPtrhWnd2,stringlpsz1,stringlpsz2);//通过对象句柄获取控件文字内容[DllImport("user32.dll",SetLastError=true,CharSet=CharSet.Auto)]publicstaticexternintGetWindowText(IntPtrhWnd,StringBuilderlpString,intnMaxCount);//通过对象句柄获取控件类名[DllImport("user32.dll",SetLastError=true,CharSet=CharSet.Auto)]publicstaticexternintGetClassName(IntPtrhWnd,StringBuilderlpString,intnMaxCount);//通过对象句柄给对象发系统消息(系统定义的消息标识:如单击、输入文字等)[DllImport("User32.dll",EntryPoint="SendMessage")]publicstaticexternintSendMessages(IntPtrhWnd,//信息发往的窗口的句柄intMsg,//消息IDintwParam,//参数1intlParam//参数2);//---------------------------staticvoidMain(string[]args){boolfind=false;IntPtrhwnd=IntPtr.Zero;while(!find){stringtitle=null;Process[]process=Process.GetProcesses();foreach(Processpinprocess){title=p.MainWindowTitle.ToString();if(title.Contains("iBalance")){hwnd=p.Handle;find=true;break;}}//Console.WriteLine(title);if(find)hwnd=FindWindow(null,title);else{ProcessStartInfoinfo=newProcessStartInfo(@"C:\ProgramFiles\ANCA\RN31.1-1\TG7\BIN\Vibe_Monitor.exe");Process.Start(info);Thread.Sleep(1000);Console.WriteLine("openit");}}find=false;if(hwnd!=IntPtr.Zero){StringBuildersb_text=newStringBuilder(1024);StringBuildersb_class=newStringBuilder(1024);IntPtrchild=IntPtr.Zero;do{child=FindWindowEx(hwnd,child,null,null);GetWindowText(child,sb_text,sb_text.Capacity);//Console.Write(sb_text.ToString()+"::CLASS::");GetClassName(child,sb_class,sb_class.Capacity);//Console.WriteLine(sb_class.ToString());if(sb_text.ToString().Contains(".")&&sb_class.ToString()=="Static"){find=true;break;}sb_text.Remove(0,sb_text.Length);sb_class.Remove(0,sb_class.Length);}while(child!=IntPtr.Zero);StringBuildermsg=newStringBuilder();if(find){inti=0;stringmsg_combine=string.Empty;try{while(true){Thread.Sleep(10);sb_text.Remove(0,sb_text.Length);GetWindowText(child,sb_text,sb_text.Capacity);intindex=sb_text.ToString().IndexOf("\n");msg_combine=DateTime.Now.ToString()+":"+"震幅:"+sb_text.ToString().Substring(0,index)+"相位:"+sb_text.ToString().Substring(index+1,sb_text.ToString().Length-index-1);i++;Console.WriteLine(msg_combine+"::"+i);msg.AppendLine(msg_combine);if(i==1024){i=0;StreamWritersw=newStreamWriter("msg.txt",true,Encoding.UTF8);sw.WriteLine(msg.ToString());msg=newStringBuilder();sw.Flush();sw.Close();}}}catch(Exceptionex){Console.WriteLine(ex.Message);Console.WriteLine("程序被关闭");}}}Console.Read();}}
责任编辑:hnmd003
相关阅读
-
全球要闻:uim卡是什么?各种手机卡知识有哪些?
uim卡是什么(uim卡和sim卡)各种手机卡知识1、UIM卡UIM(UserIdentityModel)用户识别模块,是由中国联通公...
2023-03-03
相关阅读
-
什么是句柄?句柄及其作用是什么?_新动态
什么是句柄(编译原理句柄是什么意思)小编工作的单位性质偏向于服务制造。大家都知道,中国的高端装备...
-
全球要闻:uim卡是什么?各种手机卡知识有哪些?
uim卡是什么(uim卡和sim卡)各种手机卡知识1、UIM卡UIM(UserIdentityModel)用户识别模块,是由中国联通公...
-
无刷励磁机的工作原理是什么?无刷电励磁电机怎么工作的?|今日热议
无刷电励磁电机(无刷励磁机的工作原理)要论“中国最牛死刑犯”,我第一个想起的就是纪录片《生死时速...
-
别斯兰事件是怎么回事?别斯兰人质事件处理结果?
别斯兰事件(别斯兰人质事件后报复)2011年5月2日凌晨,两架经过隐身改造的黑鹰直升机悄无声息的飞向巴...
-
焦点播报:a2奶粉最新事件遭曝光 a2奶粉最新事件是怎么回事?
近日有关于a2奶粉最新事件遭曝光的问题受到了很多网友们的关注,大多数网友都想要知道a2奶粉最新事件遭...
-
南海一号为什么会沉没?商船的目的地是哪里?
南海一号沉船(南海一号为什么会沉没)编者的话:这是一篇来自联合国教科文组织对我国考古工作的采访,而...
-
贫困标准是什么概念?2020年国家贫困线标准是什么?:报资讯
贫困标准(2020年国家贫困线标准)明年中国将全面建成小康社会,今年将要实现全面脱离绝对贫困。十八大...
-
五虐之形是什么意思?五刑起源是什么?:每日简讯
五虐之刑(五虐之形名词解释)五刑起源的记载最早见之于《尚书》,其中认为五刑最早源于苗民的说法较为...
-
大气气溶胶的种类有哪些?大气气溶胶的分布特征是什么?
大气气溶胶(大气气溶胶的分布特征)工业革命以来,人类活动对地球环境的影响显著增强并不断积累,其中...
-
qq离线文件在哪找?qq离线文件过期了能恢复吗?
qq离线文件在哪找?1、打开电脑QQ,在好友列表中找到发送离线文件的好友头像。2、然后鼠标双击打开QQ好友...
-
iPhonewifi打不开灰色怎么回事?如何判断wifi模块坏了?
iPhonewifi打不开灰色怎么回事?iPhonewifi打不开灰色可能是因为手机网络系统出现问题,可以将网络进行还...
-
人民币贬值受益股有哪些?人民币贬值的好处与坏处
人民币贬值受益股有哪些?1、人民币贬值 是指单位货币价格的下降,意味着人民币购买力的下降,有利于国...
-
阻力位和支撑位什么意思?阻力位和支撑位如何判断?
阻力位和支撑位什么意思?1、阻力位是指股票在上涨的过程中遇到了阻力,也就是所谓的瓶颈,导致其继续上...
-
市场经济是什么意思?市场经济的特征
市场经济是什么意思?市场经济是指通过市场配置社会资源的经济形式。简单地说,市场就是商品或劳务交换的...
-
关联交易是什么意思?关联交易类型
关联交易是什么意思?关联方之间转移资源、劳务或义务的行为关联交易是指关联方之间转移资源、劳务或义务...
-
放量不涨意味着什么意思?放量不涨不跌是什么原因?
放量不涨意味着什么意思?放量不涨指买的资金量和卖的资金量同时增加,导致股价浮动很小。放量不涨,有两...
-
融资融券的可用保证金是什么?融资融券的门槛是怎样的?
融资融券的可用保证金是什么?融资融券里面的可用保证金就是指你可以用来买卖股票的资金。保证金比例是指...
-
重疾险保额10万有必要买吗?怎么买合适?_环球看热讯
是否有必要买,需要看消费者具体的保障需求。 重疾险属于给付型保单,被保人确诊合同约定重疾病后,保...
-
保险的年金是什么意思?保险年金产品值得买吗?
保险的年金指的是年金保险,消费者购买年金保险并且按要求给付保费之后,保险公司会按照合同约定,在固...
-
天天视讯!太平洋保险公司的百万医疗险怎么样?有必要投保吗?
太平洋保险旗下的百万医疗险整体不错,广受好评。 1、保证续保,比如太平洋旗下的蓝医保,这款保险就可...
-
阳光保险理财险怎么样可靠吗?有哪些优势? 当前短讯
阳光保险的理财险是可靠的。 从保险公司的角度来说,阳光保险公司成立于2005年的7月,成立至今已经有18...
-
敢为时代先,超核中心城市展厅盛大启幕
每一次落笔,都与时代发展共鸣每一次担当,都在赋能城市生长每一次迭新,都为开篇下个中心示意图每一个...
-
百万医疗和重疾险有什么区别?先买哪个?:当前快播
1、保障内容区别 百万医疗险主要保障住院、手术、注意前后门急诊等相关的医疗费用;而重疾险保障的是合...
-
每日热议!外媒:三星电子2022年第四季DRAM销售额环比降25.1%
中新经纬3月3日电据韩联社报道,受全球经济衰退导致需求萎缩的影响,2022年第四季度全球半导体行业的动...
-
2023微光计划启航,谱写乡村振兴新版图
3月2日,由广州市青联委员何珊女士发起,广东长江公益基金会、广州市妇女儿童福利会与广州市小家公益服...
-
百度注册Searchat、百度百晓生、百度晓搜等多个商标 世界头条
【TechWeb】3月3日消息,根据国家知识产权局商标局中国商标网上的信息显示,百度于2月初申请了多个商标...
-
正邦科技被限制消费 林峰被列为老赖
凤凰网科技讯3月3日消息,据天眼查App显示,近日,因有履行能力而拒不履行生效法律文书确定义务,江西正...
-
哔哩哔哩2022 Q4及全年电话财报会议:2024年将达到盈亏平衡
鞭牛士报道 北京时间3月2日(美东时间3月2日),哔哩哔哩(NASDAQ:
-
外媒:微软687亿美元收购暴雪或将获批
据IT之家援引外媒消息,三位知情人士透露,通过向竞争对手提供授权
-
精选!中通快递被做空机构指责财报造假
据华尔街见闻,美国卖空机构Grizzly Research发布报告,认为中通快
精彩推荐
阅读排行
精彩推送
- 上海消保委提醒谨慎购买威马汽车...
- 戴尔2023财年第四财季营收250.39...
- 全球观察:宝马X1同平台 全新MI...
- 将于年内发布 比亚迪F品牌首款...
- 供应链问题缓解,福特2月美国销...
- 领克将进军美国市场:全球热点评
- 微动态丨外观优化调整 新款起亚...
- 年线怎么看?突破年线的股票会大...
- 创新的基本原理是什么?创新对企...
- 流动负债怎么算?流动负债占总负...
- 股票举牌是什么意思?股票举牌是...
- 什么是认购权证?认购权证是权益...
- 换手是什么意思?换手率选股的方...
- 新股申购到上市要多久?新股申购...
- 螺旋桨k线是什么意思?螺旋桨k线...
- 天安人寿安鑫享年金保险万能型保...
- 世界新动态:平安保险寿险产品有...
- 权益法和成本法有什么区别?权益...
- 国华盛世年年年金保险c款怎么样...
- 全球今日讯!保险意外险多少钱一...
- 泰康人寿养老200万如何返还?可...
- B站2022年净亏损为75亿元,Up主...
- 西安一商场回应艺术画展被指涉儿...
- 【国际快讯】特斯拉市值蒸发500...
- 今日讯!福特设立自动驾驶子公司...
- 世界讯息:VinFast开始向美国客...
- 止损指令怎么设置?止损指令和限...
- 支撑线是什么?支撑线和压力线怎...
- 农产品股票可以买吗?粮食股票龙...
- a股大跌有什么影响?A股大跌的原...