用CreateToolhelp32Snapshot、Process32First、Process32Next将系统的所有进程枚举出来,然后在将进程所引用的模块枚举出来,然后给你要卸载的对比,对比一致的列出来

解决方案 »

  1.   

    卸载软件的程序中可能查询当前进程,以判断将要操作的进程是否活动,给一个函数供参考:// 取进程
    BOOL CPNConfigApp::GetProcessID(CString ProcessName, DWORD &hProcID, DWORD &ParentID)
    {
    int con=0;
    CString str;
    PROCESSENTRY32 pe32;
    pe32.dwSize=sizeof(pe32);
    // 获得系统内所有进程快照
    HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    if(hProcessSnap==INVALID_HANDLE_VALUE)
    {
    // 出错
    return FALSE;
    }
    // 枚举列表中的第一个进程
    BOOL bProcess=Process32First(hProcessSnap,&pe32);
    while(bProcess)
    {
    str=pe32.szExeFile;
    // 比较进程名,找到要找的进程名
    if(ProcessName.CompareNoCase(str)==0)
    {
    con++; // 进程数加1
    }
    // 继续查找
    bProcess=Process32Next(hProcessSnap,&pe32);
    }
    CloseHandle(hProcessSnap);
    if(con>1)
    return TRUE; // 进程已经启动
    else
    return FALSE; // 进程没有启动
    }
      

  2.   


    请问:CreateToolhelp32Snapshot这个函数,能够找出64位应用程序吗?还是只能找出32位应用程序?
      

  3.   

    控件是listctrl .
    枚举进程  ID ,加入到listctrl 中可以了.
      

  4.   

    List Control 控件 CListCtrl (report)