我要读取一个进程所使用内存的多少,采用了GetProcessMemoryInfo函数,而且“#include <psapi.h>”为什么编译器报错
“fatal error C1083: Cannot open include file: 'psapi.h': No such file or directory

解决方案 »

  1.   

    你满足使用这个函数的要求吗?
    Requirements
    Client Requires Windows XP, Windows 2000 Professional, or Windows NT Workstation 4.0. 
    Server Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0. 
    Header Declared in Psapi.h. 
    Library Link to Psapi.lib. 
    DLL Requires Psapi.dll. 
    如果没有,到http://www.microsoft.com/msdownload/platformsdk/sdkupdate/下载SDK升级包
      

  2.   

    我的OS是 win2000Professional sp4,而且system32目录中也有psapi.dll文件
      

  3.   

    # include "psapi.h"
    如果还不行,在""符号里把路径给加上
      

  4.   

    你的机器上是不是没有'psapi.h'啊?6.0没有的,你最好搜索一下,要不我给你发一份,[email protected]
      

  5.   

    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000class CPSAPI
    {
    public:
    CPSAPI();
    virtual ~CPSAPI(); BOOL Initialize(void); BOOL EnumDeviceDrivers(void);
    BOOL EnumProcesses(void);
    BOOL EnumProcessModules(DWORD dwProcessId);
    // BOOL EnumModuleFileName(HANDLE hProcess); virtual BOOL OnDeviceDriver(LPVOID lpImageBase);
    virtual BOOL OnProcess(LPCTSTR lpszFileName, DWORD ProcessID);
    virtual BOOL OnModule(HMODULE hModule, LPCTSTR lpszModuleName, LPCTSTR lpszPathName);protected:
    bool m_bNeedPSAPI; // Windows NT variables
    HMODULE m_modPSAPI;
    HMODULE m_modVDMDBG; // Windows 95 variables
    };#endif // !defined(__PSAPI_H__)
      

  6.   

    psapi.h 我从C++builder的头文件中找到了放在了当前目录下现在编译通过了,但是连接失败
    Linking...
    LINK : LNK6004: Debug/ListProcesses.exe not found or not built by the last incremental link; performing full link
    ListProcessesDlg.obj : error LNK2001: unresolved external symbol _GetProcessMemoryInfo@12
    Debug/ListProcesses.exe : fatal error LNK1120: 1 unresolved externalsListProcesses.exe - 2 error(s), 0 warning(s)
      

  7.   

    这是我调用GetProcessMemoryInfo函数的部分代码long CListProcessesDlg::getProcessMemory(DWORD hnd)
    {
    PROCESS_MEMORY_COUNTERS  pmc;
    pmc.cb = sizeof(PPROCESS_MEMORY_COUNTERS);
    memset(&pmc,0,pmc.cb);
        
    HANDLE prHnd = OpenProcess(PROCESS_VM_READ,true,hnd);
    if (prHnd)
    {
    if (!GetProcessMemoryInfo(prHnd,&pmc,pmc.cb))
    {
    return -1;
    }
    }
    return 0;
    }
      

  8.   

    在psapi.h文件中有
    大家帮帮忙吗!
      

  9.   

    VC6太老了,在VC.NET 和VC.net2003中都有这个文件,分别在vc7\plantformsdk\include和vc7\plantformsdk\lib中,复制一份到你的VC6目录中,然后记得在工程设置里加上psapi.lib
      

  10.   

    我将psapi.lib加到Project->Setings->Object/library modules
    但是连接时仍然报错