GetProcessMemoryInfo
принимает дескриптор процесса , а не дескриптор окна. После того как вы найдете окно, вы можете вызвать GetWindowThreadProcesId
для идентификатора процесса, затем OpenProcess
, чтобы получить дескриптор процесса. Тогда вы наконец можете вызвать GetProcessMemoryInfo
для этого дескриптора.
Когда вы звоните, вам не нужен BOOL WINAPI
в начале. Обычно вы хотите присвоить возвращаемое значение, чтобы проверить, удалось ли оно, например:
bool succeded = GetProcessMemoryInfo(process, /* ... */);
Редактировать: вот действительно упрощенная демонстрация:
#include <windows.h>
#include <psapi.h>
#include <iostream>
int main(int argc, char **argv) {
HWND window = FindWindow(NULL, argv[1]);
DWORD id;
GetWindowThreadProcessId(window, &id);
HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, id);
PROCESS_MEMORY_COUNTERS info = {0};
info.cb = sizeof(info);
GetProcessMemoryInfo(process, &info, sizeof(info));
std::cout << info.WorkingSetSize;
return 0;
}