Hmm. Never did anything like this myself. Depending on the loaded stuff and the version of the application (defining offset in the heap to where the menu-related stuff is kept),
there's bound to be a byte that changes back and forth when you enter/exit the menu.
Try to grab a dump of the memory allocated for the application in and outside the menu several times to find it,
then look into means of accessing this place from your app.
But I've got no idea whether it would work. Just seems less hackish than looking at loaded textures...
This would be my 2nd idea, but it's not reliable too:
this game has a lot of versions and the user could be using one of these, so i should find the offset for every game version, and if the game gets a new update, this would break the state detection until i find the new offset.
Also the uk, eu and usa version has different offsets too, so for every version i should do the offset find 3 times.