Как отправить / получить сообщение из другого окна / программы?

0

Я могу выбрать любое видимое окно, которое я хочу, и получить его главный дескриптор, но я не могу обрабатывать отправку или получение сообщений. Функция GetMessage() всегда возвращает 0. Что делать, если я хочу отправить сообщение о нажатой клавише, когда текстовое поле, принадлежащее другому окну, активно?

MSG msg;
WPARAM wParam;
LPARAM lParam;
UINT message;
while(TRUE)
{
    GetMessage(&msg, rHwnd, 0, 0); // get message from another window
    TranslateMessage(&msg);
    wParam = msg.wParam;
    lParam = msg.lParam;
    message = msg.message;
    switch(message) // check whether an user clicked the 't' key
    {
        case WM_CHAR:
            switch(wParam)
            {
                case 't':
                    MessageBox(NULL, "t", "", 0);
                    break;
            }
            break;
    }
}
  • 1
    Хотите дать этому коду некоторый контекст? И, возможно, партнер по этому */ закрывающему комментарию?
Теги:
winapi
messages

1 ответ

4
Лучший ответ

Отправка сообщений в окно проста - используйте PostMessage() или SendMessage...() для этого (хотя для имитации ввода клавиатуры вы должны использовать SendInput()). Однако GetMessage() может только возвращать сообщения для окна, принадлежащего вызывающему потоку, он не может получать сообщения для окна, которое принадлежит другому потоку/процессу. Если вам нужно обработать сообщения, предназначенные для другого приложения, вы должны использовать крючок сообщения через SetWindowsHookEx().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню