Как взять title, process, process id активного окна?

314
27 мая 2017, 18:52

Хочу в этом switch, отловить title, process, process id. У меня есть 2 функции

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    //while(is_working_)
    if (nCode < 0)
        return CallNextHookEx(NULL, nCode, wParam, lParam);
    switch (nCode)
    {
    case  HCBT_ACTIVATE:
        break;
    case HCBT_CREATEWND: 
        break;
    case HCBT_DESTROYWND:
        break;
    case HCBT_MINMAX:
        break;
    case HCBT_MOVESIZE:
        break;
    case HCBT_SETFOCUS:
        break;
    case HCBT_SYSCOMMAND:
        break;
    default:
        break;
    }
    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

Первая, ловит тайтл окна.

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
    hwnd = GetForegroundWindow(); //get handle of currently active window
    if (IsWindowVisible(hwnd)) // check whether window is visible
    {
        char wnd_title[256];
        GetWindowText(hwnd, wnd_title, sizeof(wnd_title));
        std::cout << wnd_title << std::endl;
    }
    return true; // function must return true if you want to continue enumeration
}

Вторая, процес айди и процес нейм:

void PrintProcessNameAndID(DWORD processID)
{
    TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
    // Get a handle to the process.
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
        PROCESS_VM_READ,
        FALSE, processID);
    // Get the process name.
    if (NULL != hProcess)
    {
        HMODULE hMod;
        DWORD cbNeeded;
        if (EnumProcessModules(hProcess, &hMod, sizeof(hMod),
            &cbNeeded))
        {
            GetModuleBaseName(hProcess, hMod, szProcessName,
                sizeof(szProcessName) / sizeof(TCHAR));
        }
    }
    // Print the process name and identifier.
    _tprintf(TEXT("%s  (PID: %u)\n"), szProcessName, processID);
    // Release the handle to the process.
    CloseHandle(hProcess);
}

Возможно ли это сделать одной функцией?

READ ALSO
Инстанцирование шаблона non-const значением

Инстанцирование шаблона non-const значением

Есть ли в крестах возможность инстанцировать шаблон типа

321
Новичок. Помогите пожалуйста. C++

Новичок. Помогите пожалуйста. C++

Всем приветСовсем недавно начал изучение плюсов (да и программирования в целом, до этого лишь немного писал на Python)

455
с++ крестики нолики баг

с++ крестики нолики баг

Здравствуйте я новенький в мире программирования c++вот решил устроится стажером в фирму

420
Firebird API создание базы программно

Firebird API создание базы программно

Я использую Firebird API для программного создания базыДля создания базы я использую код из этого поста

302