Very tricky because the InvokeScript takes the arguments as an array. So for example, you're really passing 3 parameters there, not an array of parameters, each of the elements of mes would be one argument to DaveWriter. Meaning, if you changed it to:
function DaveWriter(arg1, arg2, arg3) {
// Your code
}
It would be there. There isn't, from what I've seen, a clean method to do what you want. Some recommend JSON, then evaluating the JSON in JavaScript. I don't like that idea because you have to use eval() which makes me feel wrong.
Here's what I suggest. What if you pass it like you are, then access it via the arguments variable. See Arguments object for more information.
Basically:
function DaveWriter(mes){
document.getElementById('company').innerHTML = arguments[0];
document.getElementById('address').innerHTML = arguments[1];
}
It's not ideal, but it will allow you to do what you want. I don't believe there are many other options. Maybe someone knows of a cleaner way, but this should work for you. I didn't have an opportunity to test that fully as I don't have a WPF application with a WebBrowser handy, but I think that will accomplish what you need.