Amazon.co.uk Review
The author sets out to demonstrate the feasability of writing shell level programs in Visual Basic. Microsoft recommends C++ for shell programming--basically, adding or altering the features of the Windows GUI.
Changing shell behaviours is accomplished using the COM (Component Object Model), for example, extending the Windows namespace so you can browse the Registry with Explorer. This is one of the seven example shell programming projects in the book. Other projects include a new icon handler, new Property pages, new drop handlers, new Clipboard formats and other goodies. Each or any of these can be used to integrate your program's behaviours more tightly into the Windows shell.
It has to be said, Microsoft never intended you to do these things with VB. As a consequence the author is forced to put VB though some unusual hoops, such as changing the way it derives classes. While there's nothing intrinsically wrong with pushing the VB envelope, changing Windows' default behaviours should be done with care. For example, each file type can have only one drop handler. If you change the handler to suit a program of your own it can have knock-on effects on existing programs which assume the default behaviour. This is why the author uses a made up .rad filetype in the projects.
This book is well and enthusiastically written with working examples that are nevertheless simple enough to showcase the essentials. If you're a VB programmer, Visual Basic Shell Programming, read this book and you may never have sand kicked in your face by the C++ folk again. --Steve Patient
Product Description
While Visual Basic provides an outstanding set of resources for rapidly developing standalone applications, it lacks the resources that allow you to integrate that application or its data files with the Windows shell by adding such features as customized context menu handlers, per instance icons (such as a data file icon that's based on the contents of the file), or customized property sheets. Typically, these shell extensions that closely integrate an application with the Windows shell are written in C++, and all of the available documentation focuses on using C++ to create shell extensions. Even C++ programmers, however, have difficulty doing so, in view of the woefully inadequate state of the documentation. Very few programmers know that writing shell extensions is not tied to a single language or development environment, and that Visual Basic is an excellent tool for creating shell extensions that more closely tie an application to the Windows shell. That, however, is precisely the focus of Visual Basic Shell Programming: to show you how to take advantage of shell services to develop the shell extensions that allow you to closely integrate your application with the Windows shell, and to provide the basic documentation that you need to accomplish this. Each major type of shell extension is covered, including: Context menu handlers that can add items to the popup menu that appears when the user right clicks a file. Icon handlers for displaying per instance icons that, like the standard Recycle Bin icon, vary depending on some condition Property sheet pages, which appear when the user selects the Properties option from a file's context menu. InfoTip handlers, which display tooltips, or "info" tips for a file object on a per instance basis. In showing how to integrate your applications with the Windows shell by building shell extensions, author J.P. Hamilton also provides a concrete tutorial on COM programming with Visual Basic. While developing your own shell extensions, you'll encounter a number of advanced VB concepts and techniques: Pointers. Since VB tends to hides pointers from the programmer, Hamilton shows how to take advantage of the undocumented VarPtr, StrPtr, and ObjPtr functions, as well as the Win32 RtlMoveMemory function. Using class identifiers (CLSIDs) from Visual Basic. VTable modification, which allows you to override the fact that Visual Basic prevents you from controlling the HRESULT (or status code) returned by a call to a COM method. Visual Basic Shell Programming ventures where none have gone before by showing you how to develop shell extensions while providing an advanced treatment of COM programming with Visual Basic.
See all Product Description