Как открыть контекстное меню любого окна?
Как открыть контекстное меню окна (обычный контекст Windows, который появляется при щелчке правой кнопкой мыши на строке заголовка окна).
Вещи, которые я пробовал (по нажатию кнопки)
ReleaseCapture();
SendMessage(this.Handle, WM_NCRBUTTONDOWN, 0, 0);
SendMessage(this.Handle, WM_RBUTTONUP, 0, 0);
SendMessage(this.Handle, WM_CONTEXTMENU, 0, 0);
И это:
ReleaseCapture();
SendMessage(this.Handle, WM_NCRBUTTONDOWN, HT_CAPTION, 0);
SendMessage(this.Handle, WM_RBUTTONUP, HT_CAPTION, 0);
SendMessage(this.Handle, WM_CONTEXTMENU, HT_CAPTION, 0);
1 ответ
Решение
Чтобы открыть системное контекстное меню в окне, вы можете нажать Alt + Пробел. Таким образом, в вашем случае вы можете отправить эти ключи в это окно, которое должно открыть для вас контекстное меню.
Часть, которую вы сделали с SendMessage
на самом деле отправляет только уведомление о том, что указанное окно имитирует правый клик. Но все равно важно, где находится мышь.
Также важно: если вы используете "SendKeys.Send" (для оконных форм), это повлияет только на окно, которое в данный момент активно.