Getting the Host's Main Window Handle in an Office Add-in

Getting the Host's Main Window Handle in an Office Add-in

Sometimes you want the window handle of the host application when you're writing an Office add-in. Excel includes that as a property of the Application object in newer versions of the object model, but Word and PowerPoint don't. I seem to remember some sample code from Microsoft that suggests using FindWindow to get the handle, but that always seems problematic:

Instead, if you're using managed code, you can just do this:

IntPtr hwnd = Process.GetCurrentProcess().MainWindowHandle;

Underneath this uses EnumWindows and GetWindowThreadProcessId to find the right window.