吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1323|回复: 5
收起左侧

[求助] 以下代码不能得到64位的进程路径

[复制链接]
冥界3大法王 发表于 2021-2-18 22:05



[Delphi] 纯文本查看 复制代码
uses
  Math, SHELLAPI, RegularExpressions, TLHelp32, PsAPI, Clipbrd, Unit2, Unit3,
  UnitMainForm4, Unit5, Unit6, Unit4, Unit7;

function GetPathFileofModule(ModuleName: string): string;
var
  hProcSnap: THandle;
  pProcess: THandle;
  pe32: TProcessEntry32;
  s: string;
  buf: array[0..MAX_PATH] of char;
  hMod: HMODULE;
  cbNeeded: DWORD;
begin
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
  if hProcSnap = INVALID_HANDLE_VALUE then
    Exit;
  pe32.dwSize := SizeOf(ProcessEntry32);
  if Process32First(hProcSnap, pe32) = True then
    while Process32Next(hProcSnap, pe32) = True do
    begin
      if uppercase(pe32.szExeFile) = uppercase(ModuleName) then
      begin
        pProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, pe32.th32ProcessID);
        if pProcess <> 0 then
        begin
          if EnumProcessModules(pProcess, @hMod, sizeof(hMod), cbNeeded) then
          begin
            ZeroMemory(@buf, MAX_PATH + 1);
            GetModuleFileNameEx(pProcess, hMod, buf, MAX_PATH + 1);
            Result := strpas(buf);
          end;
        end;
      end;
    end;
  CloseHandle(hProcSnap);
end;

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

揰掵佲 发表于 2021-2-18 23:00
试试 GetProcessImageFileName 和 QueryDosDevice

免费评分

参与人数 1吾爱币 +1 收起 理由
冥界3大法王 + 1 受教,感谢。

查看全部评分

156608225 发表于 2021-2-18 23:49
编译成64位程序就可以了,32位程序不能枚举64位进程

免费评分

参与人数 1吾爱币 +1 收起 理由
冥界3大法王 + 1 成了,谢谢。

查看全部评分

huangxiaolin520 发表于 2021-2-19 02:23
头像被屏蔽
冰棍好烫啊 发表于 2021-2-19 09:04
提示: 作者被禁止或删除 内容自动屏蔽
156608225 发表于 2021-2-19 12:03

CreateToolhelp32Snapshot可以枚举出64位进程,但EnumProcessModules不能枚举64位进程模块,需要编译成64位程序
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 08:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表