I just encountered this myself.
The problem is that you are not sending in the parameter as a string.
eval takes a string as parameter and if you invoke this script with your current parameter it will translate into:
eval(function Player() { this.play = function(e) { window.external.notify(e); }})
when what you really want to do is:
eval("function Player() { this.play = function(e) { window.external.notify(e); }}")
So the correct this, try:
webbrowser.InvokeScript("eval", "\"function Player() { this.play = function(e) { window.external.notify(e); }}\"");