Общесистемный контекстный щелчок правой кнопкой мыши - PullRequest
1 голос
/ 22 сентября 2011

** Привет ..

Я создаю приложение WinForm для словаря английского языка на гуджарати.

Мне нужно установить системный хук для контекстного меню, вызываемого правой кнопкой мыши, для выделения текста.

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

Как это сделать?

или любые другие опции, такие как Программирование регистра, расширения оболочки и т. Д.?

Я должен это сделать, даже если вы говорите, что это невозможно.

, поэтому, пожалуйста, помогитея. **

1 Ответ

1 голос
/ 22 сентября 2011

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

Получение выделенного текста является более сложной частью.См. WindowFromPoint , для начала.Вам нужно будет распознать элемент управления и, если необходимо, получить выделенный текст из него.Это не всегда возможно при использовании простых функций Win32, если элемент управления сложный.

Добавление перевода в контекстное меню, вероятно, является невозможной частью.Добавление материала в контекстное меню проводника не является проблемой, поскольку проводник предоставляет такую ​​возможность.Но различные приложения будут иметь различные контекстные меню без возможности их расширения.Они могут даже не использовать Win32 для меню по любой причине.Лучшим вариантом, IMO, был бы один из следующих:

  1. Забудьте об изменении меню, вызываемого правой кнопкой мыши.Откройте окно рядом с точкой выбора с любым содержимым, которое вы хотите, и позвольте приложению отобразить свое собственное меню, вызываемое правой кнопкой мыши.
  2. Если пользователь щелкает правой кнопкой мыши, например, нажимая клавишу Shift, показывает свои права- нажмите меню и не передавайте сообщение в приложение.Таким образом, пользователь увидит только одно меню, которое ваше.Пользователь, конечно, должен знать об этой комбинации.
...