It is certainly an interesting idea and in theory it should work. But I'm afraid it'll be next to impossible to do it from script. Why? Well mainly because you'd have to add these invisible elements to each menu that is open (or rather, to the menu that is at the very top), and without a way to delete it again it would quickly pile up (well there won't be duplicates but as soon as it's used in multiple menus the exact same element has to be copied too).

One way to get rid of newly inserted stuff is simply reloading the Menu. The Reload-http://cs.elderscrolls.com/constwiki/index.php/Category:Console_Functions at least worked without problems for the HudMainMenu.
According to the Wiki-Page, the command isn't reliable for all menus, though.
Apart from that, I suppose I could see if it is even possible, there is a small chance the whole 'mouseover' stuff doesn't work in the same frame the element gets added. But lets assume that it does, then I think it is better to start off with relatively large elements and then slowly make them smaller. As in, first use squares of 100x100 pixels, check which of the ~15 squares is selected and then further divide it into squares of 10x10, etc. Dividing the entire screen into 1x1 elements would be very, very bad for Oblivion's memory. Not to mention the fps. On average that would be nearly 1 million elements (1024x800 = 819200, and alot of people play higher resolutions)!

Well, my last though were stripes, which would result in sth. about 1280+1024 = 2304, but first using 100 Pixel-Stripes and then decrease the width should reduce the number required even more (should be sth. about 50 if this really works).
If this doesn't work I think you got to create the raster directly at the start and live with the 2000-3000 elements.
I think you have to use "\#test\_test", similar to how PrintTileInfo needs "\" for dumping top-level content. If that doesn't work let me know and I'll look into it. Oh and ofcourse I should add it to the documentation, which will probably be later today with an update too. :blush:
-kyoma
OK, this worked. Thanks.

Next Request:
What about Including strings instead of an already existing file?
It's already possible using Pluggys StringToTxtFile & DelFile (directly before & after mqInsertXML), but still requires another OBSE-Plugin-dependency.
Mainly useful for small files (e.g. change a single trait-calculation), but still ...
If you're not convinced yet, just see it as an testing-function to use from the console without the need to always leave Oblivion for a single change.
Edit:
Wait, seem like DelFile doesn't work if it's called in the same frame as StringToTxtFile (to create the file).
Edit2:
Meh, DelFile refuses to work in the Data-Folder.

But since it doesn't change anything if you delete the file per hand this shouldn't change anything.
Oh, btw. does mqInsertXML have a nth-argument (for the where-to-insert part), too?
Greetings (and sorry for that many questions),
Low Post
PS:
Are new elements always inserted at the end of the file, or just at some place (i.e. is is possible that the index of an already existing element changes (if that element also only was inserted in that frame))?