Как открыть контекстное меню любого окна?

Как открыть контекстное меню окна (обычный контекст 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" (для оконных форм), это повлияет только на окно, которое в данный момент активно.

Другие вопросы по тегам