Доступ к контекстному меню правой кнопкой мыши из внешнего приложения

После выполнения некоторого Google-фу и поиска переполнения стека я не смог найти способ получить доступ к контекстному меню элемента и прочитать данные или выбрать элемент из него. Я искал методы для SendMessage и PostMessage

Что я сделал до сих пор:

это Вот пример поста, который был бы именно тем, что я хочу, если бы он не использовал Qt и работал бы во внешнем приложении. Все, что мне удалось найти, — это создание меню правой кнопки мыши, когда я просто хочу просмотреть меню правой кнопки мыши внешнего приложения.

Я попытался получить дескриптор контекстного меню, используя Spy ++, но меню просто исчезает, как только я выбираю опцию «Найти окно» в Spy ++ (что и следовало ожидать).

Единственный способ сделать это — использовать mouse_event чтобы показать коробку, но тогда я не знаю, куда идти оттуда. Я чувствую, что это также будет очень неэффективно.

Я работаю над устаревшим кодом, поэтому у меня нет большого выбора в том, что я могу использовать, если это возможно, я бы хотел не использовать библиотеки, которые не включены в Visual Studio 2008.

Что я пытаюсь сделать:

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

Спасибо за чтение!

2

Решение

Единственный способ получить контекстное меню — заставить приложение отображать его. Это не существует иначе. (Другой вопрос, который вы даете в качестве примера, касается меню Windows Shell, которое разработано так, чтобы его можно было использовать)

Окно отправляется WM_CONTEXTMENU когда пользователь щелкает правой кнопкой мыши, так что вы можете использовать SendMessage (), чтобы вызвать меню, или в случае неудачи просто отправить правой кнопкой мыши.

После небольшого поиска в Google я думаю, что контекстные меню имеют имя класса # 32768, так что вы можете использовать FindWindowEx найти дескриптор дочернего окна с соответствующим именем класса.

Если у вас есть дескриптор окна, вы можете использовать MN_GETHMENU сообщение, чтобы получить дескриптор меню.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]