不知道为什么,我调用Process32First(h1,@pe) 老是不成功!

taixinltd 2003-07-18 10:28:17
var
PE : ProcessEntry32 ;
h1 : THandle ;
begin
H1 := CreateToolhelp32Snapshot( TH32CS_SNAPHEAPLIST and
TH32CS_SNAPPROCESS and
TH32CS_SNAPTHREAD and
TH32CS_SNAPMODULE ,0 );
if h1 = -1 then
begin
const
TH32CS_SNAPHEAPLIST = $1 ;
TH32CS_SNAPPROCESS = $2 ;
TH32CS_SNAPTHREAD = $4 ;
TH32CS_SNAPMODULE = $8 ;

type
LPPROCESSENTRY32 = ^ PROCESSENTRY32 ;
PROCESSENTRY32 = Record
dwSize : DWORD ;
cntUsage : DWORD ;
th32ProcessID : DWORD ;
th32DefaultHeapID : DWORD ;
th32ModuleID : DWORD ;
cntThreads : DWORD ;
th32ParentProcessID : DWORD ;
pcPriClassBase : DWord ;
dwFlags : DWORD ;
szExeFile : Array[0..MAX_PATH-1 ] of Char ;
end;
.....
...
memoLog.Lines.Add('Fail to CreateToolHelp32Snapshot') ;
CloseHandle(h1);
Exit;
end;


memoLog.Lines.Add('success to open');
pe.dwSize := SizeOf(ProcessEntry32);
if Process32First(h1,@pe) = False then
begin
memoLog.Lines.Add('Fail to use Process32First ! ') ;
end;

closeHandle(h1);
...全文
105 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ly_liuyang 2003-07-19
  • 打赏
  • 举报
回复
function GetProcessIDList(const AFilename: string; const PathMatch: Boolean): TPIDList;
ar
lppe: TProcessEntry32;
SsHandle: Thandle;
FoundAProc, FoundOK: boolean;
begin
Result := TPIDList.Create;
SsHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
lppe.dwSize := SizeOf(TProcessEntry32);
FoundAProc := Process32First(Sshandle, lppe);
while FoundAProc do
begin
if lppe.th32ProcessID > 0 then
begin
if AFilename = '' then Result.Add(lppe.th32ProcessID) else
begin
if PathMatch
then FoundOK := AnsiStriComp(lppe.szExefile, PChar(AFilename)) = 0
else FoundOK := AnsiStriComp(PChar(ExtractFilename(lppe.szExefile)), PChar(ExtractFilename(AFilename))) = 0;
if FoundOK then Result.Add(lppe.th32ProcessID);
end;
end;
FoundAProc := Process32Next(SsHandle, lppe);
end;
// if not FoundAProc then showmessage(SysErrorMessage(GetLastError));
CloseHandle(SsHandle);
end;
yansea 2003-07-19
  • 打赏
  • 举报
回复
var Snap : THandle;
PPro : PProcessEntry32;

Snap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
New(PPro);
if Process32First(Snap,PPro^) then

或者声明 ppro:TProcessEntry32,然后直接写参数即可
if Process32First(Snap,PPro) then

Eastunfail 2003-07-19
  • 打赏
  • 举报
回复
CreateToolhelp32Snapshot( TH32CS_SNAPHEAPLIST and
TH32CS_SNAPPROCESS and
TH32CS_SNAPTHREAD and
TH32CS_SNAPMODULE ,0 );

昏~~~~应该用or
sixgj 2003-07-18
  • 打赏
  • 举报
回复
换个机子看看怎么样。我有一次就是换了个机子没动代码就能行了。
呵呵,怪啊。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧