Unfortunately for you the reason you can't find anything changing is that on windows "explorer.exe" which is responsible for pretty much all file operations (file explorer, desktop management, etc...) is always open, and runs from a single instance. I'm not aware of any way you can do this from python but I do have a solution that you can incorporate, even if it's not ideal.
Using PIL, found here http://www.pythonware.com/products/pil/, you can grab an image of the screen and check pixel colors at specific points, which should allow what you're currently after. If you need to grab pixel colors from the screen the best tool I can think of for quick mockups would be autohotkeys window spy.
Hopefully this helps, I know how annoying automation can be sometimes when you have to do hacks like this so let me know if you have any other questions.
Edit:
I was messing around with the idea that when file explorer is open the amount of handles open by explorer will increase by a decent margin, and if you aren't doing anything except running automated scripts the behavior is fairly predictable but would require a little experimentation on your end.
This is what I have:
import psutil
for proc in psutil.process_iter():
if 'explorer' in proc.name():
print(proc.name() + " handles:" + str(proc.num_handles()))
When I run this with my file explorer closed vs file explorer open I get a random increase of about 100 handles or more, so you might be able to store the previous amount and poll the current amount assuming you do not open anything else when the handles increase by X amount you know that file explorer has been opened and can begin typing, then after it drops near X amount you know its closed and you resave the new handle count and wait for your X increase again.
While this is not a perfect solution you should be able to make it work quite well for what you want.
Edit2:
This works for me, you may need to change the usualIncrease amount since it might be a larger or smaller amount of handles created.
import psutil
import time
handlesPrevious = 0
usualIncrease = 100
for proc in psutil.process_iter():
if 'explorer' in proc.name():
handlesPrevious = proc.num_handles()
while 1:
time.sleep(5)
for proc in psutil.process_iter():
if 'explorer' in proc.name():
handlesCurrent = proc.num_handles()
if (handlesPrevious + usualIncrease) <= handlesCurrent:
print("File explorer open! - handles:" + str(handlesCurrent) + " previous handles:" + str(handlesPrevious))
handlesPrevious = handlesCurrent
elif (handlesPrevious - usualIncrease) > handlesCurrent:
print("File explorer not open! - handles:" + str(handlesCurrent))
handlesPrevious = handlesCurrent