ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   Общие вопросы программирования (https://forum.antichat.io/forumdisplay.php?f=206)
-   -   Ловим контекстное меню и отправляем в него клик. (https://forum.antichat.io/showthread.php?t=1411861)

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

Gafask 05.01.2022 12:15

Цитата:

Сообщение от YarmaK

Правую кнопку пробовал нажимать?

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

Цитата:

Сообщение от Receiver

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

manukhov 05.01.2022 21:21

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

Gafask 08.01.2022 00:38

Цитата:

Сообщение от T4yz1e

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

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

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

sc6ut 08.01.2022 02:17

Цитата:

Сообщение от Gafask

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

под виндой - хукнуть TrackPopupMenu (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-trackpopupmenu)

Gafask 08.01.2022 18:16

Цитата:

Сообщение от T4yz1e

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

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

Цитата:

Сообщение от SC6UT

под виндой - хукнуть TrackPopupMenu (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-trackpopupmenu)

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

Gafask 26.01.2022 02:49

Цитата:

Сообщение от SC6UT

под виндой - хукнуть TrackPopupMenu (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-trackpopupmenu)

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

UP

RTD 26.01.2022 03:16

Твоя программа это DLL или EXE?

Gafask 28.01.2022 13:11

Цитата:

Сообщение от RTD

Твоя программа это 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 с параметром 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 (с сообщениями конкретко какие взаимодействуют с контекстным окном разберись уж сам)

Цитата:

Сообщение от Gafask

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

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

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 конечно было бы попроще, но и тут тоже можно справиться


Время: 23:37