你需要引用定义pTaskEntry类的单元。

解决方案 »

  1.   

    delphi里哪有pTaskEntry数据类型??
    如果有的话,不知道你的uses 里是否加入了相应的模块。
      

  2.   

    我尝试在uses 中加入TaskEntry或pTaskEntry结果提示:
    Filse not found:' TaskEntry.dcu'
      

  3.   

    MSDN 中有类似的说明 是VB的例子 "pTaskEntry"
      

  4.   

    VB?有谁知道在DELPHI是如何实现显示已打开的所有程序?
      

  5.   

    在delphi的VCL和RTL中都没有pTaskEntry的定义,
    这样肯定会出错啦!如果是VB中的例子的话,试着
    新开一单元,将pTaskEntry的定义转化为delphi的
    写法,再调用
      

  6.   

    好象要 uses TLHelp32;
    试一试这个:
    procedure TForm1.updateitClick(Sender: TObject);
    var
      p:pProcessInfo;
      ContinueLoop:BOOL;
      FSnapshotHandle:THandle;
      FProcessEntry32:TProcessEntry32;
    begin
      listbox1.Clear;
      FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
      ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
      while integer(ContinueLoop)<>0 do
      begin
        New(p);
        p.ExeFile := FProcessEntry32.szExeFile;
        p.ProcessID := FProcessEntry32.th32ProcessID;
        listbox1.Items.Add(p.ExeFile+' -> '+inttostr(p.ProcessID));
        ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
      end;
    end;
      

  7.   

    记住!先引用 TLHelp32 !
      

  8.   

    mophy(mophy):VERY感谢,TLHelp32是什么??
      

  9.   

    mophy(mophy):我试过了,可也提示Undeclared identifier:'pProcessInfo'
      

  10.   

    真是的,不是PProcessInfo,而是PProcessInfomation
      

  11.   

    按TommyTong()的方法也不进行,哪位有空帮助测一下,只要能实现列出当前已运行的程序即可,注:不需列出所有进程.
      

  12.   

    将mophy的改一下:
    uses TLHelp32;
    procedure TForm1.updateitClick(Sender: TObject);
    var
    //  p:pProcessInfo;
      ContinueLoop:BOOL;
      FSnapshotHandle:THandle;
      FProcessEntry32:TProcessEntry32;
        PID : integer;//
        s: string;//
        PHandle : THandle;//
    begin
      listbox1.Clear;
      FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
      ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
      PID:=FProcessEntry32.th32ProcessID;//
      while ContinueLoop do//
      begin
    //    New(p);
        s := ExtractFileName(FProcessEntry32.szExeFile);//
    //    p.ProcessID := FProcessEntry32.th32ProcessID;
        listbox1.Items.Add(s);//p.ExeFile+' -> '+inttostr(p.ProcessID));
        ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
      end;
      CloseHandle(FSnapshotHandle);
      PHandle:=OpenProcess(PROCESS_VM_WRITE,false,PID);
      CloseHandle(PHandle);
    end;
      

  13.   

    谢谢zgb(疲疲)和大家,要求已实现,给分了.