Once I started thinking about it, there are other cases where it would be handy to know what "mode" MC was in currently.
So, for example, in my app, I have an option to hide all tooltip bubbles on the tray icon, so that it can run completely in "silent mode". I figured that if this is something you'd be scheduling to run automated, some people wouldn't like it if the tooltip popped up "randomly" while you were watching a movie or whatever. So, I added an option to completely hide all tray icon tooltips.
But, wouldn't it be cool if I could also check to see if Display View or Theater View was active, and then hide them by default?
Also, if you're going to do something like activate a particular view, you wouldn't want to do it if the user is mid-playback or in Theater View, where it might screw up their experience (at least not without warning).
I've looked into using P/Invoke to check to see if MC's main form is visible or not, and that shouldn't be too hard to do from managed code (the Win32 API IsVisible call is just a simple bool which auto-marshals to the proper managed type). But if I want to check anything else about the Window State, it looks like a giant pile of trouble that would probably end up requiring a bunch of separate wrapper classes, user-defined types, and structs (and it might even be simpler, in the end, to write a small C/C++ application that would do the API calls and report the results you want back via COM). It's annoying that .NET still doesn't have access to the (seemingly simple) User32.dll API calls for Window State for non-managed apps, but there we are (I found a bunch of references to this on MSDN from years ago with Microsoft people assuring you that this would all be sorted out in the next few years as .NET matured).
Sigh... There's a lot to like about C# (it is certainly fast-to-develop and modern), but it does still feel half-finished in a few dark corners.