Software Requirements

only for RuBoard - do not distribute or recompile

Software Requirements

This book assumes that you are running Windows 95, Windows 98, Windows NT (with service pack 4 or later), or Windows 2000. Basically, I am assuming that you are running Windows. Unless you're running Windows 2000 (where Active Desktop is enabled by default), some of the components also require that you have installed Internet Explorer 4.0 with the Active Desktop option. Unfortunately, by design, Internet Explorer 5.0 does not give you the option to install Active Desktop. To have IE 5.0 install it if it hasn't been installed by IE 4.0, Microsoft's solution is to uninstall Internet Explorer 5.0 and to reinstall Internet Explorer 4.0, selecting Active Desktop. Then once again install Internet Explorer 5.0. It's painful, but some of the really cool examples in this book (in Chapter 13) just won't work without it.

All the code in this book was developed with Visual Basic 6.0. But VB 5.0 will work, too. It might be handy (but not necessary) to have Visual C++ installed as well. A few of the chapters require access to a resource editor, and the one that comes with this product is really good. Also, Visual C++ contains interface definitions and header files that are an invaluable reference when you are working with COM.

only for RuBoard - do not distribute or recompile
only for RuBoard - do not distribute or recompile

Obtaining the Sample Code

All of the sample Visual Basic source code from Visual Basic Shell Programming is freely downloadable from the O'Reilly & Associates web site at http://vb.oreilly.com. The downloadable content itself falls into three categories:

Sample source code

Most of the examples developed in this book are intended to illustrate how to build a particular kind of shell extension without providing a real world implementation. In this case, you'll benefit from looking at the code and using it as the basis of the shell extensions that you yourself would like to develop.

Working shell extensions

Several of the examples developed in this book are complete working extensions that you may want to use. RegSpace, for example, allows you to browse the registry from Explorer without requiring that you open RegEdit or a similar registry browsing tool.

Shell programming type library

Creating a type library that defines the interfaces and methods called by the shell in handling shell extensions is a prerequisite for any serious (and even not so serious) attempt to develop shell extensions. The VB Shell Library, which is described in the following section, is also available both in its source code (IDL) and compiled forms from the O'Reilly Visual Basic web site (http://vb.oreilly.com).

only for RuBoard - do not distribute or recompile
only for RuBoard - do not distribute or recompile

The VB Shell Type Library

During the course of this book, we will build a type library that facilitates building shell components. A type library is a language-independent file that contains interface definitions, enumerations, and constants. The type library we build will contain only those definitions that are necessary for programming components for the Windows shell. (Actually, some of the interfaces we use could be used elsewhere.)

Type libraries are built using a scripting language called, simply enough, Interface Definition Language, or IDL. Knowing IDL is not necessary for reading this book. In fact, you can consider this book an IDL boot camp. IDL is actually a rich language, but because of the environment we are in (Visual Basic), many of the more advanced features of the language are beyond our reach. So actually, I will use only the most basic elements of the language in this book.

The type library we will build is specific only with regards to the shell, not the book. Therefore, you will be able to take this library with you for use in your own shell- related projects when you are done. But even though we will focus on the shell, we do so with the idea that you will be able to take the principles learned with you.

only for RuBoard - do not distribute or recompile