HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 08.01.2022, 18:16
Gafask
Участник форума
Регистрация: 10.12.2018
Сообщений: 137
С нами: 3908139

Репутация: 23
По умолчанию

Цитата:
Сообщение от T4yz1e  

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

Цитата:
Сообщение от SC6UT  

под виндой - хукнуть TrackPopupMenu (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-trackpopupmenu)
Если я правильно прочитал то эта функция работает из моей программы и вызывает именно меню от имени мое программы . А мне нужно работать с чужой . Но я еще раз позже прочитаю возможно беглый осмотр не был успешным 🙂 , если что отпишу .
 
Ответить с цитированием

  #12  
Старый 26.01.2022, 02:49
Gafask
Участник форума
Регистрация: 10.12.2018
Сообщений: 137
С нами: 3908139

Репутация: 23
По умолчанию

Цитата:
Сообщение от SC6UT  

под виндой - хукнуть TrackPopupMenu (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-trackpopupmenu)
Не подходит, или я не так что-то делал. HMENU - не удалось получить .

UP
 
Ответить с цитированием

  #13  
Старый 26.01.2022, 03:16
RTD
Постоянный
Регистрация: 18.03.2017
Сообщений: 410
С нами: 4818548

Репутация: 133
По умолчанию

Твоя программа это DLL или EXE?
 
Ответить с цитированием

  #14  
Старый 28.01.2022, 13:11
Gafask
Участник форума
Регистрация: 10.12.2018
Сообщений: 137
С нами: 3908139

Репутация: 23
По умолчанию

Цитата:
Сообщение от RTD  

Твоя программа это DLL или EXE?
EXE
 
Ответить с цитированием

  #15  
Старый 07.02.2022, 11:17
Gafask
Участник форума
Регистрация: 10.12.2018
Сообщений: 137
С нами: 3908139

Репутация: 23
По умолчанию

Up
 
Ответить с цитированием

  #16  
Старый 07.02.2022, 22:30
RTD
Постоянный
Регистрация: 18.03.2017
Сообщений: 410
С нами: 4818548

Репутация: 133
По умолчанию

Я не понимаю почему ты за 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



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



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



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.