>>39
あ、すみません。テストロジックの例がまずかったですね。
1つの場所だけではなく、複数ある内のどれかがポップアップしているのかを
判断したいのです。

procedure TForm1.WndProc(var Msg: TMessage);
begin
 case Msg.Msg of
  WM_ENTERMENULOOP:Timer1.Enabled := False;
  WM_EXITMENULOOP: Timer1.Enabled := True;
  //どこかのポップアップメニューを操作中:Timer1.Enabled := False;
  //どこかのポップアップメニューの操作を抜けた: Timer1.Enabled := True;
 end;
 inherited WndProc(Msg);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 //処理を行う。ただしメニュー操作中は無効。
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 PopupMenu2.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
//その他、色々な場所で何種類かのポップアップメニューを表示