PDA

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


Gafask
09.12.2021, 18:52
Добрый день.🧐

Подскажите пожалуйста как я могу отравить клик в контекстное меню чужой программы при появлении его .

Или

Получить true/вызвать cout когда оно появилось .

🤛ПРИМЕР ВЫЗОВА🤜

1. Я нажимаю правую кнопочку или Shift + F10.

2. Появляется контекстное меню где разные кнопочки .​ Пример контекстного меню:

https://forum.antichat.xyz/attachments/27908756/



Вопрос: Каким образом я могу отследитьпоявлениеэтого контекстного меню или нажать к примеру там любой клавишу .

👏👏👏Спасибо за внимание. 👏👏👏👏

Gafask
12.12.2021, 06:58
Up

Gafask
17.12.2021, 16:00
Up

Gafask
22.12.2021, 10:34
Help me please .

YarmaK
22.12.2021, 11:05
Правую кнопку пробовал нажимать?

Receiver
24.12.2021, 15:44
Попробуй https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getforegroundwindow (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWdldGZv cmVncm91bmR3aW5kb3c)

Gafask
05.01.2022, 12:15
Правую кнопку пробовал нажимать?


Ты не понял суть моего вопроса .



Попробуй https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getforegroundwindow (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWdldGZv cmVncm91bmR3aW5kb3c)


Я думаю это сработает но это не стабильный вариант ( может пойматся что-то другое ) .

manukhov
05.01.2022, 21:21
Так у контестного меню нет хэндла, для винды это не отдельное окно.

Gafask
08.01.2022, 00:38
Так у контестного меню нет хэндла, для винды это не отдельное окно.


Спасибо за инфу , а как тогда отправить в контекстное меню клик при его появлении ?

Тема изменена . 🤓

sc6ut
08.01.2022, 02:17
Каким образом я могу отследитьпоявлениеэтого контекстного меню


под виндой - хукнуть TrackPopupMenu (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-trackpopupmenu (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLXRyYWNr cG9wdXBtZW51))

Gafask
08.01.2022, 18:16
Я вообще не понимаю зачем тебе это, ерундой занимаешься. Если хочешь выполнить какой-то пункт из контекстного меню, так и скажи.
Нельзя отследить появление контекстного меню, в этом просто нет смысла. С контекстным меню должен взаимодействовать пользователь, а не программа.


Да мне нужно выбрать/выполнить пунк который находится в этом меню чужой программы . Программа для работы и поэтому не могу выкладывать конкретику . Просто делаю софт для себя , что-бы меньше работать на удаленке ) . Выбрать я могу пункт через эмуляцию клавиш - альт + ф10 вызываем конктекст меню , page Down для того что-бы выбрать первый вариант в этом меню и в конце enter но это не дает гарантию что контектст меню не залагает и просто не появится ( такое уже было ) . Так как у меня программа выполняет действия выбора по это методу выше и это занимает 40 мс. и иногда повторно надо выполнять код а это иногда путает (99 успех , 1 мимо ) .



под виндой - хукнуть TrackPopupMenu (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-trackpopupmenu (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLXRyYWNr cG9wdXBtZW51))


Если я правильно прочитал то эта функция работает из моей программы и вызывает именно меню от имени мое программы . А мне нужно работать с чужой . Но я еще раз позже прочитаю возможно беглый осмотр не был успешным 🙂 , если что отпишу .

Gafask
26.01.2022, 02:49
под виндой - хукнуть TrackPopupMenu (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-trackpopupmenu (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLXRyYWNr cG9wdXBtZW51))


Не подходит, или я не так что-то делал. HMENU - не удалось получить .

UP

RTD
26.01.2022, 03:16
Твоя программа это DLL или EXE?

Gafask
28.01.2022, 13:11
Твоя программа это DLL или EXE?


EXE

Gafask
07.02.2022, 11:17
Up

RTD
07.02.2022, 22:30
Я не понимаю почему ты за 2 месяца не разобрался еще?

Одним из вариантов получить хендл контексного меню ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindow (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWdldHdp bmRvdw) с параметром GW_ENABLEDPOPUP. Получить hWnd для функции выше ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-findwindowa (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWZpbmR3 aW5kb3dh)

Отправлять выбор меню как один из вариантов ты можешь через https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessage (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLXNlbmRt ZXNzYWdl) (с сообщениями конкретко какие взаимодействуют с контекстным окном разберись уж сам)



Каким образом я могу отследитьпоявлениеэтого контекстного меню


Вот тебе код каким образом

C++:





[CODE]
int
main
(
)
{
HWND hOpera
=
FindWindowA
(
NULL
,
"WM_INITMENUPOPUP message (Winuser.h) - Win32 apps | Microsoft Docs – Opera"
)
;
if
(
hOpera
==
NULL
)
return
1
;
std
::
cout



Если его нет, то будет 0

https://forum.antichat.xyz/attachments/27968900/

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

https://forum.antichat.xyz/attachments/27968900/

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