教育房产时事环球科技商业
投稿投诉
商业财经
热点动态
科技数码
软件应用
国际环球
晨报科学
新闻时事
信息智能
汽车房产
办公手机
教育体育
生活生物

什么是句柄(编译原理句柄是什么意思)

  什么是句柄(编译原理句柄是什么意思)
  小编工作的单位性质偏向于服务制造。大家都知道,中国的高端装备基本都依赖进口,而其自带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实现上述功能需要引入using
  System.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,//参数1  intlParam//参数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();  }  }

手机变电脑软件叫什么(手机秒变电脑下载安装)今天和大家分享种草的好物是一个手机支架型扩展器ExpandX,这是Beelink设计的第一个多功能小工具,它表面是一个可调角度的手机支架,其实更是一个可以使手机轻松连接显示器的设备什么笔好用(好写不贵的中性笔)本内容来源于什么值得买APP,观点仅代表作者本人作者电影fans创作立场声明观电影,听音乐,品生活,我是电影fans!本期给大家带来好用的文具推荐,坚持独立的评价观点是笔者创作的基绘画软件哪个好(手机绘画新手入门软件)哈喽讨论绘画工具的时候我们可以把眼光望向手机只要你有一根手指头就可以画画!几乎下载和体验了所有绘画app之后我总结出以下8个免费!又好用的绘画app已经写在图片里啦以上app基本能三爪卡盘结构(机床三爪卡盘种类及结构原理)三爪卡盘结构(机床三爪卡盘种类及结构原理)卡盘是机床上用来夹紧工件的机械装置。从卡盘爪数上面可以分为两爪卡盘三爪卡盘四爪卡盘六爪卡盘和特殊卡盘。从使用动力上可以分为手动卡盘气动卡盘汽轮机工作原理(汽轮机的基本原理)汽轮机工作原理(汽轮机的基本原理)1汽轮机又名蒸汽透平(steamturbine),是将蒸汽的热能转换成机械能的一种旋转式原动机。(1)汽轮机的组成转子和静子。(2)转子转动部分的水龙头结构(水龙头结构有哪些)水龙头结构(水龙头结构有哪些)水龙头有自己的结构,水龙头结构有哪些?今日就由PChouse为你一一解答。1水龙头阀芯龙头阀芯可以说是水龙头的核心部分,它决定着水龙头的使用寿命,龙头支付宝领结婚证(支付宝里也可以领结婚证了!)支付宝领结婚证(支付宝里也可以领结婚证了!)作者奔跑吧,琪哥(本文首发鸣金网,照片网络)这个时代到底有多快?当你还在翻箱倒柜找身份证结婚证时,别人已经用一部手机住进了酒店,证明了婚免费录屏软件哪个好(傲软录屏要收费吗)前几期文章我们已经分享了文案图片相关工具,看过的都反馈好几个非常实用。那今天就继续分享运营工作中还要用到的视频类工具。分享顺序为1视频素材工具10个。2视频数据分析工具14个。3视移动硬盘分区(移动硬盘分区方法教程)移动硬盘分区(移动硬盘分区方法教程)移动硬盘是以硬盘为存储介质,计算机之间交换大容量数据,强调便携性的存储产品。但是很多朋友购买了移动硬盘后不知道怎么对移动硬盘进行分区,今天小编就ipad为什么充不上电(ipad充电口坏了官方维修)iPadAir不充电故障维修故障机型iPadAir故障现象客户描述说,平板插充电器没有充电反应,充不了电。维修过程接到平板,插充电器,没有充电反应,连接电脑也不连机,与客户描述一致ipad为什么充不上电(ipadpro用typec充不进去电)在与大家分享ipad充不进电解决方案之前,首先与大家一起普及手机电池的知识,iPad应该在0度到35度的温度下运行存放为适宜温度,为了达到最佳最适合环境温度接近室温(72f度或22
好期贷贷多少(招联好期贷一般额度)尽管大家我国如今是社会经济发展迅速,在网上的和线下推广的贷款商品和贷款服务平台有很多,可是如何选择却变成了大伙儿的一个难点。由于许多脚步的服务平台仍然存有着,就给大家挑选提升了非常重庆多少门(重庆的九大门是什么)重庆的古城与古城门本文作者倪方六去一个城市旅游,看看城门就知道有无历史了。随着今日头条组织的活动,我来到了重庆,来到了渝中,我先看的便是城门,一处叫通远门的城门。(通远门,重庆让人一加5多少钱(一加5多少w快充)6月21日,一加手机发布了最新的旗舰智能手机一加5。相信很多机友也注意到了,一加5手机官方提供初始建议零售价格并不便宜,相比上一代一加3的2499元以及一加3T的2699要贵出不少丁真所在博物馆游客不断这两天关于丁真所在博物馆游客不断在网上的热度是非常高的,很多网友们也都是非常关注丁真所在博物馆游客不断这个事情,为此小编也是在网上进行了一番搜索查阅相关的信息,那么如果说有感兴趣的600万买精装房被管家当休息室这两天关于600万买精装房被管家当休息室在网上的热度是非常高的,很多网友们也都是非常关注600万买精装房被管家当休息室这个事情,为此小编也是在网上进行了一番搜索查阅相关的信息,那么中国驻法使馆揭法方双重标准这两天关于中国驻法使馆揭法方双重标准在网上的热度是非常高的,很多网友们也都是非常关注中国驻法使馆揭法方双重标准这个事情,为此小编也是在网上进行了一番搜索查阅相关的信息,那么如果说有吃鸡怎么玩的(吃鸡里所有的枪)前言和平精英作为一款趣味性十足的手游,因为玩法多种多样,也拥有很多有趣的创新内容在其中。所以也给大家带来了很多不一样的感觉,除了各种军需,皮肤的更新以外,其实大家也很注重枪械等等,今日徐州玉米粒价格(玉米粒多少钱一斤)月28日安阳市场普碳废钢价格行情。多地的价格每斤都在0。而随着春节结束和疫情的缓解。最近玉米每斤多少钱。而北方的玉米价格则要稍低一些,闽南语称作番麦,2010年12月4日山东玉米价华为p30pro(华为p30pro多少钱)华为p30pro(华为p30pro多少钱)Tech分析狮4月14日消息,随着华为手机面临芯片短缺困境,一些华为旗舰机被迫限量销售,这也造成了一种非常罕见的现象,那就是华为旗舰手机供丢了多少钱(发现家里钱丢了怀疑是孩子)龙头新闻讯(实习生安瞳瞳记者丁燕)5月8日,是齐齐哈尔市铁锋区七旬老人王淑珍(化名)存折到期的日子。老人查看常放存折的地点,却没有发现存折。家里没人来,平时就一个继女刘平隔三差五上暗黑多少钱(暗黑3要钱吗现在)各种各样的原因,好长时间没有更新文章了。自从脱坑DNF后,也好长时间没有专心玩过网络游戏了。细心想想,生活的追求到底是什么。终究作为普通人,快乐生活才是最重要的,钱永远是挣不完的。