Using Lookout with .Net 2.0

Why use Lookout?

The MSN Search Toolbar and Windows Desktop Search are the successors to the Lookout product. The problem I had with them is they do not allow pre-defined search configurations like Lookout. In Lookout, you can customize the default filter for searches in Outlook, and create a list of standard filters (recent email, last week's files, etc.) that you can apply to any search.

Since I have discovered the WDS API documentation, which could allow me to write my own toolbars, and this very interesting blog about creating custom "locations" for WDS, I have replaced Lookout with MSN Search + the WDS update.

However, for those that are still using Lookout, here is how to make it work with Microsoft .Net 2.0 installed.

The problem

As described in an excellent article at ewbi.develops, Lookout has a bug in it that is revealed when the .Net 2.0 framework is installed.
The function ParseEx.ReplaceDates extracts one too many characters when parsing the date out of the filter syntax (see the article for the details).

The solution

I decided the best fix would be to patch the function in the lookout.dll. I used the ildasm utility to create a source file, wrote in the fix, and used ilasm to create a new dll.

Step by Step (Skip to Just download it)

  • Install the .Net Framework 2.0 SDK if it is not already installed.
  • Close Outlook if it is open
  • Open a command prompt window (Start|Run...  cmd[Enter])
  • Run the sdkvars.bat file by typing in its full path (the full path depends on how the SDK was installed - some possibilities include  "C:\Program Files\Microsoft SDKs\Windows\v2.0\Bin\sdkvars.bat" or "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sdkvars.bat").
  • Change to the Lookout folder: cd \Program Files\Lookout Software\Lookout
  • Create the disassembly file: ildasm lookout.dll /out=lookout.il
  • Open the source file in notepad: notepad lookout.il
    Use the find command to locate IL_0153 - the lines will look like:
    IL_014c: ldarg.1
    IL_014d: ldloc.3
    IL_014e: ldc.i4.1
    IL_014f: add
    IL_0150: ldloc.s V_4
    IL_0152: ldloc.3
    IL_0153: sub
    IL_0154: callvirt instance string [mscorlib]System.String::Substring(int32,
    int32)br>IL_0159: stloc.s V_5
  • Add two lines to subtract one from the second argument to Substring - the lines will look like:
    IL_014c: ldarg.1
    IL_014d: ldloc.3
    IL_014e: ldc.i4.1
    IL_014f: add
    IL_0150: ldloc.s V_4
    IL_0152: ldloc.3
    IL_0153: sub
    ldc.i4.1
    sub
    IL_0154: callvirt instance string [mscorlib]System.String::Substring(int32,
    int32)
    IL_0159: stloc.s V_5
  • Save the source file
  • Close notepad and return to the command prompt window
  • Make a backup of the lookout.dll: ren lookout.dll lookout.orig.dll
  • Create the new, patched lookout.dll: ilasm /dll lookout.il
  • If desired, clean up some of the source files: del chrome.*
  • Close the command prompt window: exit
  • Open Outlook and try out a date query!

Just download it

  • Close Outlook
  • Download the patched lookout.dll and save it in the Lookout folder (it is a good idea to copy the existing lookout.dll for a backup)
  • Note: I have not tested this copy of lookout.dll - I sucessfully used this process originally, but did not keep my patched dll when I uninstalled Lookout

Requested:

Windows is a registered trademark of Microsoft Corporation.


Comments or questions?
Send email to: scw@gamewood.net
Return to Starlight Computer WizardryWindows

Last modified: Thursday, July 13, 2006 .
Prepared by Pete M. Wilson
scw@gamewood.net