Reputation: 10797
I've a IE Explorer bar (Band object) with lots of UI and communication to server which I would like to implement in C# (.NET). I also have a BHO with all kind of DOM manipulation and events which I would like to implement in C++ (using ATL). What should be the best way to communicate between these two components. Given that a single process can have several of those (Explorer Bar and BHO per tab), the pairing has to somehow facilitate IE.
Upvotes: 0
Views: 431
Reputation: 17962
I recommend using the Registry for this. The registry can handle a large payload, and it is fast and reliable, and you have the rights to access it. If your process had the privileges and you want a faster throughput I'd say go with named pipes. But your hands are tied as a BHO. (I presume anyway, I haven't actually tried to register a named pipe in a BHO process.)
"the pairing has to somehow facilitate IE." IE does not care - have each process generate its own GUID, and then create a registry key with that GUID as the name.
Upvotes: 0
Reputation: 15261
You can use IE to facilitate connections, for example you can call IWebBrowser2::PutProperty to store the automation interface of your BHO and retrieve it in your explore bar.
Upvotes: 1
Reputation: 2265
You can write an object and register it in the Running Object Table and then coordinate communication from there.
You could use any form of IPC at this point http://msdn.microsoft.com/en-us/library/windows/desktop/aa365574(v=vs.85).aspx.
Upvotes: 0