Node.js win32-api Получить и установить заголовок окна с идентификатором процесса окна - PullRequest
0 голосов
/ 02 мая 2020

Как мне добиться того, что я написал в топи c? У меня есть доступ к win32-api в моем приложении узла, и я знаю этот идентификатор процесса окна, который я хочу изменить. Я знаю, что функции EnumWindows() и GetWindowThreadProcessId() были бы полезны в этом, но я даже не знаю, что передать в качестве параметров EnumWindows() и что эта функция вернет.

1 Ответ

0 голосов
/ 04 мая 2020

Сначала необходимо убедиться, что ваше окно находится на верхнем уровне при использовании EnumWindows.

Функция имеет 2 параметра:

lpEnumFun c

Тип: WNDENUMPRO C

Указатель на определяемую приложением функцию обратного вызова. Для получения дополнительной информации см. EnumWindowsProc.

lParam

Тип: LPARAM

Определенное приложением значение, которое должно быть передается в функцию обратного вызова (вы можете передать ей идентификатор процесса)

Вы можете вызвать GetWindowThreadProcessId в обратном вызове EnumWindowsProc и сравнить с идентификатором процесса для каждого найденного окна.

Вот пример на C ++:

#include <windows.h>
#include <iostream>

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
    DWORD *pid = (DWORD*)(lParam);
    DWORD processId;
    if (GetWindowThreadProcessId(hwnd, &processId) && processId == *pid)
    {
        WCHAR Title[MAX_PATH] = { 0 };
        GetWindowTextW(hwnd,Title, MAX_PATH);
        wprintf(L"Title : %s\n", Title);
        SetWindowTextW(hwnd, L"TestTitle");
        return FALSE; //end enumerating;
    }
    // Continue enumerating
    return TRUE;
}
int wmain(int argc, wchar_t* argv[])
{
    DWORD pid = 11244;//set the process id you have.
    BOOL bResult = EnumWindows(EnumWindowsProc,(LPARAM)&pid);
    return 0;
}

И для использования EnumWindowsProc обратного вызова в node.js, вы можете обратиться к этому sample .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...