Добавление MenuItem в уже существующее меню заголовка WPF - PullRequest
0 голосов
/ 17 сентября 2018

Что на данный момент, что я хочу

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

Спасибо за помощь.

1 Ответ

0 голосов
/ 18 сентября 2018

Это можно сделать, используя взаимодействия, чтобы перейти к вызовам Win32 ... Сначала переопределите метод SourceInitialized для Window и добавьте следующее:

public const uint MyMenuItemID = 0x0555;

private const uint MF_BYCOMMAND = 0x00000000;
private const uint MF_BYPOSITION = 0x00000400;

[DllImport ("user32.dll")]
private static extern IntPtr GetSystemMenu (IntPtr hWnd, bool bRevert);

[DllImport ("user32.dll")]
private static extern bool InsertMenu (IntPtr hMenu, uint uPosition, uint uFlags, uint uIDNewItem, string lpNewItem);

private void Window_SourceInitialized (object sender, EventArgs e)
{
    HwndSource source = PresentationSource.FromVisual (this) as HwndSource;
    if (source != null) {
        IntPtr hMenu = GetSystemMenu (source.Handle, false);
        InsertMenu (hMenu, 5, MF_BYPOSITION, MyMenuItemID, "my own MenuItem");
    }
}
...