После выполнения некоторого Google-фу и поиска переполнения стека я не смог найти способ получить доступ к контекстному меню элемента и прочитать данные или выбрать элемент из него. Я искал методы для SendMessage и PostMessage
это Вот пример поста, который был бы именно тем, что я хочу, если бы он не использовал Qt и работал бы во внешнем приложении. Все, что мне удалось найти, — это создание меню правой кнопки мыши, когда я просто хочу просмотреть меню правой кнопки мыши внешнего приложения.
Я попытался получить дескриптор контекстного меню, используя Spy ++, но меню просто исчезает, как только я выбираю опцию «Найти окно» в Spy ++ (что и следовало ожидать).
Единственный способ сделать это — использовать mouse_event чтобы показать коробку, но тогда я не знаю, куда идти оттуда. Я чувствую, что это также будет очень неэффективно.
Я работаю над устаревшим кодом, поэтому у меня нет большого выбора в том, что я могу использовать, если это возможно, я бы хотел не использовать библиотеки, которые не включены в Visual Studio 2008.
Я ищу способ получить доступ к контекстному меню правой кнопкой мыши во внешнем приложении и прочитать данные в нем, а затем выбрать элемент. Я чувствую, что это должно быть действительно просто, но мои исследовательские навыки не на должном уровне. Если кто-то может указать мне правильное направление, я был бы очень признателен.
Спасибо за чтение!
Единственный способ получить контекстное меню — заставить приложение отображать его. Это не существует иначе. (Другой вопрос, который вы даете в качестве примера, касается меню Windows Shell, которое разработано так, чтобы его можно было использовать)
Окно отправляется WM_CONTEXTMENU когда пользователь щелкает правой кнопкой мыши, так что вы можете использовать SendMessage (), чтобы вызвать меню, или в случае неудачи просто отправить правой кнопкой мыши.
После небольшого поиска в Google я думаю, что контекстные меню имеют имя класса # 32768, так что вы можете использовать FindWindowEx найти дескриптор дочернего окна с соответствующим именем класса.
Если у вас есть дескриптор окна, вы можете использовать MN_GETHMENU сообщение, чтобы получить дескриптор меню.
Других решений пока нет …