GlobalMemoryStatus()只能得到小于2G内存的,当机器内存大于2G时就显示不正确了,用GlobalMemoryStatusEx这个函数好像vc6.0不支持阿,怎么办???

解决方案 »

  1.   

    GlobalMemoryStatusEx不是VC6不支持
    需要安装较新的Platform SDK,并且需要在stdafx.h中定义_WIN32_WINNT至少为0x0500
      

  2.   

    stdafx.h中定义_WIN32_WINNT至少为0x0500 这个我已经定义了,怎么安装较新的Platform SDK?
      

  3.   

    http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
      

  4.   

    有没有不用安装SDK就能搞定的办法??
      

  5.   

    LoadLibrary("kernel32.dll");然后GetProcAddress
      

  6.   

    如果用SDK的话,是不是每台运行我程序的机器都要安装SDK阿?
      

  7.   

    你用VS.net 里面的VC7.0就可以了
    VC6.0的话
    可以参考
    typedef BOOL (CALLBACK* FuncGlobalMemoryStatusEx)(LPMEMORYSTATUSEX lpBuffer);
    ...
    FuncGlobalMemoryStatusEx pEnumGlobalMemoryStatusEx;
    ...
    if ((m_hKernel = ::LoadLibrary("Kernel32.dll")) == NULL)
    {
    AfxMessageBox("Could not load Kernel32.dll", MB_ICONERROR);
    return FALSE;
    }
    pEnumGlobalMemoryStatusEx = (FuncGlobalMemoryStatusEx)GetProcAddress(m_hKernel32, "GlobalMemoryStatusEx");