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

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

  什么是句柄(编译原理句柄是什么意思)
  小编工作的单位性质偏向于服务制造。大家都知道,中国的高端装备基本都依赖进口,而其自带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();  }  }

邮政储蓄10万无息贷款(邮政银行信用贷30万多久放款)为满足市民工作生活娱乐休闲等多方面消费需求,邮储银行推出邮薪贷邮享贷等消费贷款产品,让市民轻松贷款,幸福不等贷。邮薪贷是邮储银行向工薪职工发放,用于合法个人消费用途的人民币信用消费如何提前还房贷(2021年建行贷款提前还款细则)现在别看很多人买房如买白菜,其实面对动辄几十万,甚至几百万的房子,95的购房者都是要从银行贷款来买房,全款买房的人是极少数。有数据显示,在2020年前三季度住户部门中长期贷款增加了贷款还款方式有哪些(贷款放款后要去银行吗)房贷还款方式有两种等额本金和等额本息两种还款方式如何选择从还款人收入的角度来说还款人的收入低,除了房贷开销勉强够家庭日常开销,那我建议选择等额本息而且还款年限选择最长的,这样月供会银行放款多久到账(银行放款了是不是马上到账)受到新房贷政策的调控,很多银行为了调整房贷业务,都放缓了房贷放款的脚步。因此很多购房者的房贷申请虽然通过了,但却迟迟收不到放款通知。有朋友咨询,好不容易等到银行说房贷下款了但是钱没面签后多久放款(贷款中介面签骗局)相信很多朋友在购买房产时,都有申请房贷的经历。而在申请房贷的过程中,最煎熬的,应该就是等待房贷的放款了。那么,房贷面签通过后,什么时候放款呢?我们一起来了解下。一般来说,在我们房贷贷款买车多久放款(分期买车银行放款得多久)对于买车这件事情来说,这基本上就是一件非常重要的家庭大事,有的车主在买完了车子以后,本来是很高兴的,但是因为买车的时候是贷款买车,结果突然之间发现自己的买车的发票不见了,相关的合格银行贷款多少利息(银行贷款30万需要什么条件)通常情况下,银行要求借款人具有二代身份证稳定的工作证明收入证明贷款用途证明个人信用状况良好对借款人的收入也有一定条件的限制,一般会要求借款人月均收入不低于4000元。在提交相关申请贷款审批需要多久(审批通过确定会放款吗)相信很多朋友都有过申请银行贷款的经历,在提交了相关的申请材料后,就可以静待银行审批放款了。那么,贷款审批通过后,多久能放款呢?我们一起来了解下。其实,贷款放款的时效,是与贷款的类型购房贷款审批要多久(房贷审核需要多久)幸福里百科词条申请房贷一般一个月就能下来。一般而言,房贷审批的时间与录入系统的流程市场和银行信贷额度宽松度有一定关系,快的话可能几天就能完成,慢的话可能得要几个月。申请房贷的流程是房贷多久能下来(2022新政策不能贷款买房子)房贷慌已经延续到了2022年,全国各地当前存在一个尴尬的事实就是目前贷款排队的人数较多,放款周期延长,预计至少要到2022年春节之后。近日,中国经营报记者先后联系中国银行交通银行建办etc要多久(etc办理多长时间下来)羊城晚报讯记者王丹阳,通讯员粤交集宣粤通卡报道11月30日,广东省交通集团对外表示,为进一步方便车主安装ETC,提升高速公路ETC使用率,自11月15日至今,在此前30个营业厅的基
福建省教育厅人事处(福建教育厅副厅长排名)福建省教育厅人事处(福建教育厅副厅长排名)有需要的小伙伴看过来!福建省委党校福建行政学院招聘29人福建中医药大学附属第三人民医院招26人莆田市教育系统招聘省教育厅在全省教育系统公开福建省教育网(福建专升本网官网)福建省教育网(福建专升本网官网)省教育厅领导了解附属第一幼儿园百年发展历程学校供图省教育厅领导观看幼儿园小朋友表演学校供图27日下午,六一国际儿童节前夕,省委教育工委书记省教育厅党化学试卷分析(提取题干信息看石家庄市一中教师分析八省联考化学卷)化学试卷分析(提取题干信息看石家庄市一中教师分析八省联考化学卷)2021年1月23日25日,实行312新高考模式的广东河北江苏福建重庆湖南湖北辽宁等八省份,进行了新高考适应性考试。数学补充习题答案(2020数学补充习题五年级上册人教版参考答案)数学补充习题答案(2020数学补充习题五年级上册人教版参考答案)江苏凤凰教育出版社2020数学补充习题五年级上册人教版参考答案更新啦,使用这一系列的同学做完作业可以来对对答案,有做今年五一连放5天假2021年最新放假安排时间表每天都有不同的新闻上热搜,热搜也是大家了解当下各种热门新闻的一个途径的,这两天今年五一连放5天假2021年最新放假安排时间表的热度就非常高,也是受到了网友们的关注,那么小编今天自然高考几天结束(2021年考试安排时间表最新)高考几天结束(2021年考试安排时间表最新)五月份对高考备考至关重要,以下是5月备考策略,对高三学生备考有极大的帮助作用。考生五月备考策略1五月备考的基本特点五月份属于高考前的最后2015山东高考语文(2015年山东高考试卷)2015山东高考语文(2015年山东高考试卷)2015高考淄博十一中考点第一位走出考场的考生。(孙剑摄)等待考生出来的家长们。(孙剑摄)走出考场的考生们。(孙剑摄)作文题目。(来自高考提前批(2021高考提前批录取分来了)高考提前批(2021高考提前批录取分来了)内蒙古作为我国五大自治区之一,它的高等教育资源算是比较丰富,而且各地高校也纷纷向内蒙古考生敞开大门。虽然和中部和东部的省份相比录取的人数不2019届本科毕业生平均月收入5440近日有关于2019届本科毕业生平均月收入5440的问题受到了很多网友们的关注,大多数网友都想要知道2019届本科毕业生平均月收入5440的具体情况,那么关于到2019届本科毕业生平2019山东高考人数统计(山东今年高考多少人参考)2019山东高考人数统计(山东今年高考多少人参考)2021年高考报名人数出炉!创下历史新高共1078万人!那么目前为止,都有哪些省市公布了今年的参考人数?和麦麦一起来看看今年各省市2020年河北省高考理科状元花落承德市一中近日有关于2020年河北省高考理科状元花落承德市一中的问题受到了很多网友们的关注,大多数网友都想要知道2020年河北省高考理科状元花落承德市一中的具体情况,那么关于到2020年河北