ExplorerListView gets some new features

Thanks to Geoff Chappell, the next release of ExplorerListView will include several new features. Geoff has analyzed Windows Vista and he has found out that the native list view control of Vista has an undocumented COM interface. This interface can be used to do things like footer areas, subseted groups and groups in virtual mode. I’ve published an article on The Code Project about it.
Footer area support is already implemented and works fine on Windows Vista and 7 Beta 1 (I did not test 2008, but would be surprised if it wouldn’t work there). Subseted groups support is complete, too. It works on Vista (and probably 2008), but not yet on 7. Groups in virtual mode are working, too, but again on Vista and 2008 only.
Here’s a screenshot showing the footer area support: footerarea
Unfortunatly, to implement groups in virtual mode in a clean manner, I had to do some compatibility-breaking changes.

Why the desktop search of Windows Vista sucks

A week ago, I’ve upgraded from Windows XP SP3 to Vista x64 SP1. I already had been using Vista in early 2007 for ~2 months, but downgraded again due to its poor performance, bad driver support and many small annoyances. One thing that drove me nuts in 2007 already, is the new desktop search. While performance, driver support and so on have become much better since then, I still don’t like the new desktop search. Let me show you why.

Yesterday I wanted to search all files within C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc for the string IOleInPlaceActiveObject. This folder and its sub-directories contain a total of 476 files. I browsed to this folder and the first problem arose: How do I search for file contents? There’s just this search box in the top-right corner. What do I enter there? The filename patterns I want to search for? The content I want to search for? Both? If both: in which syntax do I enter it? I decided to just enter IOleInPlaceActiveObject into this box and hit Enter.

The search was finished immediately, but didn’t find anything which I knew was wrong. But now Explorer displayed a link Search File Contents which I clicked. The search started again. I waited one minute. Still no file was found and the search was still running. I waited two minutes – no found file, search still running. Finally, after four minutes, the search was complete and now six hits were displayed. I couldn’t believe that searching 476 files for a specific string would take 4 minutes, so I started xplorer² and told it to search the directory again for the same string. It took less than 1 second and 19 files were found. This started to become interesting…

The first question that came to my mind was why Explorer finds 6 files and xplorer² 19 files. The answer is that xplorer² really searches all files while Explorer skips binary files. Okay, so Explorer tries to be smart and for most users skipping binary files indeed is a good idea. But not for me. Sometimes I want to search binaries for a specific content. How do I tell Explorer to not skip them then?

The second question was why does Explorer need about 240x the time that xplorer² needs although it doesn’t even search within binary files?? Yes, the directory is not part of my search index. But xplorer² doesn’t use any index either! What the hell is Explorer doing that it is so much slower???

So if you don’t want to miss any file no matter which directory on your hard disk you search, you’ll have to tweak the indexing service to include all directories and any file type or you’ll have died before the end of the search. But can the indexing service be tweaked to include binary files? I’m not sure and I won’t try it because indexing my whole hard disk would probably take a day or two and keeping this index current would probably put some nice extra load to my hard disk.

I also don’t understand why found files are not displayed before the end of the search. Imagine a search that will result in hundreds of hits, but take half an hour to complete. You have to wait 30 minutes, in which you already could work with the first hits, and then you get hundreds of hits at once. Yeah! Great!

For me the Vista desktop search is just crap. Its usability is poor, it is extremely slow as soon as the index can’t be used and it swallows hits. The search of Windows XP wasn’t that much better, but on XP you could activate the legacy search that was the default up to Windows 2000 and I always used this one.

So whenever I have to search something on my hard disk, I’ll start xplorer² and search it there. Let’s see what annoying things Windows 7 will introduce…