检查菜单项是否在 Delphi 中使用 API Win32 启用

Check Menu Item is Enable With API Win32 in Delphi

当菜单项被禁用然后在控制应用程序中传递代码 "PostMessage" 时我在这段代码中出现问题,因为我需要检查菜单项是否已启用然后使用 PostMessage。

  HandleMenu:= GetMenu(ParentAppHandle);
  HandleMenu:= GetSubMenu(HandleMenu, 6 {menu item no});
  item:= GetMenuItemID(HandleMenu , 12 {sub menu item no});

  PostMessage(ParentAppHandle, WM_COMMAND, MakeWParam(item, 0), 0);

使用 WinAPI 函数 GetMenuState

示例:

var
  State: UINT;
begin
  State:= GetMenuState(HandleMenu , 12, MF_BYPOSITION);
  if (State and (MF_DISABLED or  MF_GRAYED)) = 0 then
  begin
    // Menu Item is enabled
  end
  else
  begin
    // Menu Item is disabled
  end;