本文整理自网络,侵删。
HANDLE:句柄,是Windows用来表示对象的(不是C++的对象),HWND是其中一种,HWND是HANDLE,但HANDLE不只是HWND,更具体的查MSDN吧。
HANDLE(句柄)是Windows操作系统中的一个概念。在Windows程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时会为它们分配内存,并返回标示这些资源的标示号,即句柄。句柄指的是一个核心对象在某一个进程中的唯一索引,而不是指针。由于地址空间的限制,句柄所标识的内容对进程是不可见的,只能由操作系统通过进程句柄列表来进行维护。句柄列表:每个进程都要创建一个句柄列表,这些句柄指向各种系统资源,比如信号量,线程,和文件等,进程中的所有线程都可以访问这些资源。
其实我们编程时输出一下句柄的值就可以发现这些值往往非常小(<100)。由此就可以看出句柄的性质了。
无效的返回值为: INVALID_HANDLE_VALUE
HWND一般是用来定义窗口句柄的HANDLE 是用来定义任何类型的句柄,(Handle to an object).包括HWND。可以理解为HWND是HANDLE的一个特例,用来表示一个窗口!
Function GetProcessHandleAsName(Name:String):THandle;Var Hd,Hs:THandle; dExit:Cardinal; Tmp,Tmp1:String; Lp:TProcessEntry32;begin Result:=0; Lp.dwSize:=sizeof(TProcessEntry32); Hd:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if Process32First(Hd,Lp) then Repeat Tmp:=UpperCase(Trim(Name)); Tmp1:=Trim(UpperCase(Lp.szExeFile)); if AnsiPos(Tmp,Tmp1)>0 then begin Result:=OpenProcess(PROCESS_ALL_ACCESS,true,Lp.th32ProcessID); break; end Until Process32Next(Hd,Lp)=False;end;
相关阅读 >>
Delphi 10 seattle android应用程序使用toast
更多相关阅读请进入《Delphi》频道 >>