OK, solved now. I had run sfc /scannow command prompt, which didn't fix the problem. However, I found and renamed explorerframe.dll to explorerframe.dll.backup and ran sfc /scannow again. It immediately told me there was a system fix pending and that I should restart my PC and run scannow again. I didn't want to reboot my PC without explorerframe.dll in-case it stopped working entirely (my nerves were getting the better of me by then). So I went back and set explorerframe.dll back to its original name. I restarted my PC anyway, as scannow had told me there was a fix pending and: lo-and-behold, Explorer was fixed and back to normal.
Much relief, and my son has been banned from PC for one month. Hopefully a lesson has been well learned.