void RefreshThreadList (DWORD dwOwnerPID)
{

HANDLE        hThreadSnap = NULL;
BOOL          bRet        = FALSE;
THREADENTRY32 te32        = {0};
int px=0;
hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); te32.dwSize = sizeof(THREADENTRY32); if (Thread32First(hThreadSnap, &te32))
{
px=0;
do
{

if (te32.th32OwnerProcessID == dwOwnerPID&&dwOwnerPID!=0)
{
lst[px]=te32.th32ThreadID;
px++;  
}

}
while (Thread32Next(hThreadSnap, &te32));
} CloseHandle (hThreadSnap);
}
请问谁帮我把这句vc转成delphi?

解决方案 »

  1.   

    var
      lst: array[0..99] of DWORD;procedure RefreshThreadList (dwOwnerPID: DWORD );
    var
      hThreadSnap: THandle;
      te32: THREADENTRY32;
      px: Integer;
    begin    
      hThreadSnap := 0;
      fillchar(te32, sizeof(te32), 0);
      px := 0;  hThreadSnap := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);  te32.dwSize := sizeof(THREADENTRY32);  if (Thread32First(hThreadSnap, te32)) then begin
        repeat
          if (te32.th32OwnerProcessID = dwOwnerPID) and (dwOwnerPID <> 0) then begin
            lst[px] := te32.th32ThreadID;
            Inc(px);  
          end;
        until (Not Thread32Next(hThreadSnap, te32));
      end;
      CloseHandle (hThreadSnap);
    end;
      

  2.   


    for(int i=0;i<100;i++)
    {
    if(lst[i]==0)
    {
    break;
    }
                     }能不能再请问下这个怎么转?
      

  3.   

    var
     i:integer;
    ...
     for int i:=0 to 99 do
         if lst[i]=0
               break;
      

  4.   

    点得太快了,少一个then
    for int i:=0 to 99 do
      if lst[i]=0 then
      break;