Galin Iliev's blog

Software Architecture & Development

Skype and Internet Explorer BHO

Have you seen new Skype 3.0? Although it becomes more colorful it has too many new features.

The new Skype Web Toolbar for Internet Explorer is fascinating.

The Skype Web Toolbar recognizes phone numbers and Skype Names on web pages, so that you can call with one click, through Skype.

But how do they do it?

Is it some ActiveX? Something else? Should I go back to C++ in order to create something similar?

Not really!

This is (simple) HTML and JavaScript. Well... probably not that simple but still not ActiveX.

But why I do not see it when I am viewing Page’s Source?

This is tricky part – you are not able to see this additional code because it is added after browser complete downloading page from the site.

And how I can create something similar?

You don’t have to write it in C++. But still you will have to know how to create COM object that is attached to IE or Browser Helper Object (BHO). Fortunately there are some sites that explain that like:

·         Good Steven M. Cohn's  post  - IE Browser Helper Objects

·         AutoSig: A browser helper object that automatically adds a different signature when you post a message to a CP forum – I deeply suggest you to explore this article and demo code in it.

You will see similar code in articles above:

browser.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(this.OnDocumentComplete);

 

With this code you get control when browser completes downloading the page. And in this handler you have access to the page with:

IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document;

 

And having access to document you are able to modify page’s source. Thus you can put what you want where you want. The limit is your imagination J (and web design skills)

Ooh… I almost forgot: you can add additional script tags and images in web page. This is not big deal as you can reference them in client’s computer (that’s right this is not pure web development).

 

 

Add-Ins for your applications

I suppose most of you are pleased when some new cool add-in is released and it adds new feature to your favorite tool/utility. Most of us - developers - know about Reflector and it's ecosystem of useful add-ins.

Have you ever wanted to be able to create such applications without having to code by hand all these add-in infrastructure classes?!

Guess what?! New System.Addin namespace is coming with VS "Orcas" to facilitates you.

SideShow Gadgets with C#

Here are components that allow creating gadgets for SideShow with our favorite c#.

Microsoft called it Windows SideShow .NET Framework Components 1.0 (link) and...  unfortunately ... must be deployed to the client. But still this is very cool

Here short description from MS:

The Windows SideShow .NET Framework Components installs the runtime and development components that are required to build and run gadgets for Windows SideShow using the .NET Framework version 2.0. This download facilitates gadget development and enables developers to build compelling applications to support Windows SideShow-compatible devices. Users are required to install this component in order to run gadgets that have been built using the component.

Developer documentation can be found in the Windows SDK.

UPDATE: I just found that this is creating of great Jeffrey Richter

Here you can find how to use these APIs (http://msdn.microsoft.com/msdnmag/issues/07/01/SideShow/default.aspx)

MS Word 2003 menus in Word 2007

There was a lot noise about new Office 2007 User Interface and the Ribbon. Many people had difficulties getting used to new ribbon although after initial confusing it is quite easy to use.

For people who learned Word 2003 and feel in calm waters when see menubar we decided to start new project. This project is in its CTP and we haven't decided if we want to finish it yet.

The project utilizes Riboon to create good old menus in Word 2007. It would look like this:

Word 2003 Menus

We have some functionality implemented in menus already :).

I will be glad if you vote For or Against such initiative (By clicking on comments[x] link below ).

Thank you in advance