У меня есть приложение, похожее на панель задач WPF, которое я разрабатываю для развлечения, и я хочу иметь возможность открыть системное меню для приложения (которое находится на моей пользовательской панели задач), на котором я щелкаю правой кнопкой мыши, сохраняя любое пользовательское меню, которое приложение может создать (например, Google Chrome). У меня есть следующий код, который работает для приложения с окном без полей, которое я сделал ранее, но, похоже, он не работает, и мне интересно, почему? И что мне нужно сделать, чтобы заставить его работать?
public static void ShowContextMenu(IntPtr hWnd)
{
SetForegroundWindow(hWnd);
IntPtr wMenu = GetSystemMenu(hWnd, false);
// Display the menu
uint command = TrackPopupMenuEx(wMenu,
TPM.LEFTBUTTON | TPM.RETURNCMD, 0, 0, hWnd, IntPtr.Zero);
if (command == 0)
return;
PostMessage(hWnd, WM.SYSCOMMAND, new IntPtr(command), IntPtr.Zero);
}
Совет. Похоже, что TrackPopupMenuEx (...) сразу возвращает значение 0, вместо ожидания ответа ...