delphi GetProcessHandleAsName 获取进程句柄


本文整理自网络,侵删。

 
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 把pf8bit位图变换成pf24bit位图

Delphi如何删除数据库重复记录(4种方法)

Delphi 申请内存空间 内存分配 缓冲区

Delphi ticon保存ico文件时失真的解决办法

Delphi 安卓图像压缩bitmapcompress

Delphi 鼠标跟随代码

Delphi 修改webbrowser的内容

Delphi 10 seattle android应用程序使用toast

Delphi 操作webbrowser 元素值

Delphi 用api函数抓取屏幕图像

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...