获取Explorer进程ID的两种方式

获取 Explorer 进程 ID 的两种方式

由进程 ID 进而用 OpenProcess 函数获取句柄

 

1.       通过桌面类和名称

                .data?    

szDesktopClass      db    'Progman',0                ; 桌面的窗口类

szDesktopWindow db    'Program Manager',0         ; 桌面的窗口名称

dwProcessID     dd   ?                        ; 保存进程 ID

dwThreadID      dd   ?                       ; 保存线程 ID

                .code

invoke     FindWindow,addr szDesktopClass,addr szDesktopWindow ; 获取桌面窗口句柄

invoke     GetWindowThreadProcessId,eax,offset dwProcessID      ; 获取进程 ID

mov     dwThreadID,eax                     ; 线程 ID

2.       进程快照方式,比较可执行文件名

                .data?

szExplorer      db      'EXPLORER.EXE',0   ; 可执行文件名

dwExplorerID    dd     ?                   ; 保留 Explorer 进程 ID

                .code

_ProcTest proc

        local @stProcess:PROCESSENTRY32          ; 每一个进程的信息

              local @hSnapShot                           ; 快照句柄      

           pushad                          

              invoke     RtlZeroMemory,addr @stProcess,sizeof @stProcess ; 0 初始化进程结构

              mov @stProcess.dwSize,sizeof @stProcess                 ; 手工填写 结构大小

              invoke     CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0 ; 获取进程快照

              mov @hSnapShot,eax                                  ; 快照句柄

              invoke     Process32First,@hSnapShot,addr @stProcess       ; 第一个进程

              .while      eax             

                       invoke   lstrcmp,addr @stProcess.szExeFile,addr szExplorer ; 比较文件名                         

                      .if   eax == 0       ;0 ,说明进程名相同                      

                             mov eax,@stProcess.th32ProcessID

                             mov dwExplorerID,eax

                    .endif                   

                   invoke   Process32Next,@hSnapShot,addr @stProcess ; 下一个进程

              .endw

              invoke     CloseHandle,@hSnapShot ; 关闭快照

              popad

_ProcTest endp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值