Ловим контекстное меню и отправляем в него клик.

Gafask

Участник
Автор темы
137
13
Добрый день.🧐
Подскажите пожалуйста как я могу отравить клик в контекстное меню чужой программы при появлении его .
Или
Получить true/вызвать cout когда оно появилось .
🤛ПРИМЕР ВЫЗОВА🤜
1. Я нажимаю правую кнопочку или Shift + F10.

2. Появляется контекстное меню где разные кнопочки .
Пример контекстного меню:
изображение_2021-12-09_173525.png



Вопрос: Каким образом я могу отследить появление этого контекстного меню или нажать к примеру там любой клавишу .
👏👏👏Спасибо за внимание. 👏👏👏👏
 
Последнее редактирование:
  • Ха-ха
Реакции: kin4stat
Решение
Я не понимаю почему ты за 2 месяца не разобрался еще?
Одним из вариантов получить хендл контексного меню ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindow с параметром GW_ENABLEDPOPUP. Получить hWnd для функции выше ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-findwindowa
Отправлять выбор меню как один из вариантов ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessage (с сообщениями конкретко какие взаимодействуют с контекстным окном разберись уж сам)
Каким образом я могу отследитьпоявлениеэтого контекстного меню
...

RTD

Нестандартное звание
Модератор
391
413
Я не понимаю почему ты за 2 месяца не разобрался еще?
Одним из вариантов получить хендл контексного меню ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindow с параметром GW_ENABLEDPOPUP. Получить hWnd для функции выше ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-findwindowa
Отправлять выбор меню как один из вариантов ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessage (с сообщениями конкретко какие взаимодействуют с контекстным окном разберись уж сам)
Каким образом я могу отследитьпоявлениеэтого контекстного меню
Вот тебе код каким образом
C++:
int main()
{
    HWND hOpera = FindWindowA(NULL, "WM_INITMENUPOPUP message (Winuser.h) - Win32 apps | Microsoft Docs – Opera");
    if(hOpera == NULL)
        return 1;
    std::cout << "main hwnd " << hOpera << std::endl;
    while(true) {
        if(GetAsyncKeyState(0x31)) {
            std::cout << "context hwnd " << GetWindow(hOpera, GW_ENABLEDPOPUP) << std::endl;
            while(GetAsyncKeyState(0x31)) continue;
        }
    }
    return 0;
}
Если его нет, то будет 0
1644258460275.png

Если есть, то хеднл. Делай с ним что хочешь

1644258507503.png


C dll конечно было бы попроще, но и тут тоже можно справиться