Below you'll find a quick description of a variety of full-blown demonstration projects that are available here for download. Most contain "drop-in ready" code and class modules. Clicking on any given link will take you to a page that describes the project in more detail. You may display the projects either alphabetically, or in descending order of last update if you just want to see what's changed recently. Other pages that might be of interest, since you're here, are:

Finally, many of you have told me you've had great success using these samples, often totally unmodified, within Microsoft Office and other platforms supporting Visual Basic for Applications (VBA). I've added a new field to the database to indicate which ones have been found to work really well in that environment. You'll see a small version of the logo (to right) next to all such samples below, where that applies. I intend to keep testing my samples, in pursuit of which are "VBA-Ready!" andVBA-Ready! which might be with only minor modifications. If you've found VBA utility in samples not so marked, please let me know.


  1. Classic VB sample that contains BAS and/or CLS files that may be used directly within Visual Basic for Applications.
  2. FRM files designed for Classic VB are generally compatible with Visual Basic for Applications unique UserForm objects.

Display Projects Chronologically


AltTab, 6/13/2000 VBA-Ready!
Constructs application lists, consisting of title and icon, as generated by the Alt-Tab window and Task Manager.
AniCtrl, 6/22/1999
Encapsulates an animation control within a drop-in class module.
ApiErrMsg, 7/5/1999 VBA-Ready!
Decode API error numbers into meaningful descriptions.
AppIcon, 12/7/1999
Change your application icon at runtime.
Assoc, 9/24/2009 VBA-Ready!
Retrieve strings related to file associations, such as executable launch command, friendly file type, etc.
ClipEx, 7/1/2002 VBA-Ready!
Recreates functionality of the Clipboard object for VBA.
ClipFileCopy, 9/14/1999
Shows how Explorer copies and pastes files (actually, file lists) to/from the clipboard.
ClipView, 6/22/1999
Injects application into clipboard viewer chain.
CloneObjs, 9/4/2000
Uses Friend scope to provide objects with Clone methods.
CmdLine, 5/6/2004
Read and parse the command line into an argument array or test for switch presence and parameters.
ConClip, 5/20/2005
Console utilities to read/write the Windows clipboard.
Console, 2/17/2010
Full console application development support from within VB5/6 IDE.
CustomBlt, 4/12/2000
Provides TransBlt and TileBlt routines for transparent and tiled bitblts.
Dialogs, 1/18/2011 VBA-Ready!
Common dialogs without any external dependencies.
DirDrill, 6/18/2007 VBA-Ready!
Demonstrates recursive use of VB's Dir function.
DrvInfo, 3/7/2002 VBA-Ready!
Provides all kinds of information about any drive in the system.
DrvMap, 1/20/1999
Converts drive letters to UNC share name.
DualList, 6/22/2009
Two UserControls that offer the ability to move items between (add/remove) or within (up/down) listboxes.
EditMenu, 11/24/1997
Full edit menu/button support for both ordinary and rich textboxes.
EnumMsgs, 5/19/2000
Enumerates the list of strings Windows maintains (&hC000-&hFFFF) for things like registered messages.
EnumRes, 4/12/2000
Enumerates resources embedded within any file, and displays many standard types.
FileControls, 7/11/2006
Combines the native file controls into a single-file, easy-to-use, no-dependency UserControl.
FileInfo, 7/26/2001 VBA-Ready!
Provides all kinds of information about any file in the system or network, by replicating the General and Version tabs of Windows' File Properties dialogs.
FindPart, 5/18/2000
Finds desired window based on partial (either "begins with" or "contains") caption.
Flood, 5/7/2001
Recreates the Paint function for VB, as provided in QuickBasic.
FontPre, 4/18/2001
TrueType fontfile (TTF) inspector extracts information from allows viewing of uninstalled fonts.
ForceFore, 10/27/1998
Force another window to the foreground, when SetForegroundWindow doesn't work, by attaching to its thread.
FormBdr, 8/9/2001
Provides runtime access to "read-only" properties such as ControlBox, MaxButton, MinButton, Moveable, and ShowInTaskbar. Adds new properties such as AutoDrag, Sizeable, Titlebar, and Topmost.
FormPair, 5/12/2005
Force a toolwindow to follow a main form as its moved around the screen.
Fraction, 7/9/2000 VBA-Ready!
Rational numbers (fractions) encapsulated by a class; full math support.
FtpExists, 2/8/2000
Determines whether a specified file exists on an FTP server.
FullDrop, 5/12/2005
Sizes the dropdown portion of a combobox to fit number of elements.
Grabber, 2/13/2008
Various methods to add a grabber (or "shangle") to your forms, including a new one that supports XP themes..
Hello, 12/6/2000
Recreation of Charles Petzold's classic "HelloWin" demo; pure API, including exitcode.
HexDump, 12/6/2000 VBA-Ready!
Functions to dump a hex view of any memory address and dereference pointers to strings (ANSI or Unicode) and Dword values.
HookMe, 5/12/2005
Native subclassing technique for VB5/6. Extremely clean.
HookXP, 7/24/2009 VBA-Ready!
Demonstrates native Windows subclassing method with no risk of improper teardown. Very flexible!
HyperJmp, 8/3/2004 VBA-Ready!
ShellExecute any URL to open a website in the default browser.
HyperLabel, 4/16/1999
UserControl that provides hyperlink capabilities to either text or images; highlights based on when mouse enters and leaves.
KeyStuff, 7/29/2010
Stuff the keyboard buffer from your console applications.
kpIni, 5/12/2005 VBA-Ready!
An oldie! This one goes back to Win16 days. Finally updated for 32-bit! Do anything with INI files. Anything.
Lasso, 9/17/2001
Draw a selection rectangle within a Picture box control.
ListSearch, 1/1/1999
"Type-o-matic" searches for ordinary and combo listboxes.
Locale, 3/22/2007 VBA-Ready!
Determine regional settings for current user and machine. Modify current user's regional settings.
LongScroll, 12/8/2003
Provides support for Long (32-bit) values with standard scrollbars; supports Value, Min, Max, Change properties.
LVStyles, 3/27/1999
Bunches of ListView tricks, including very fast API-based sorting. VB5 only?
MapFile, 4/29/2004
Maps a file into your process's memory space, so you can reference it using pointer operations.
MdiBack, 9/27/2001
Paints the background of MDI forms with any sort of graphic, pattern, or color you choose.
MemoryDC, 7/1/2002
Provides a virtual canvas in memory for you to draw on; separates hBitmap from StdPicture for use with APIs.
MemStatus, 2/19/2010 VBA-Ready!
Determine the total and available amounts of physical, virtual, and pagefile memory.
Monitors, 8/7/2009 VBA-Ready!
Provides a collection of objects representing each monitor on the system, and a module of functions for monitor tricks.
MouseEvent, 4/11/2000
Full control of the mouse through code, including mousewheel.
MovedMsg, 7/13/2005 VBA-Ready!
Position a MsgBox anywhere on screen, or directly over specified window.
MsgHook, 11/24/1997
Freeware subclassing controls.
MultiOE, 2/3/2005
Shows how to call a DLL that resides in an unknown location at compile time.
NCMetrics, 12/7/1999 VBA-Ready!
Obtain non-client metrics from the system, including conversion of LOGFONT structures to StdFont objects.
NetCam, 4/10/2007
Provides a full-function UserControl that retrieves and displays webcam images from web.
NetConnect, 12/11/1998
Determine whether you have Internet access.
NetDomain, 10/17/2000
Obtain domain controller information on Win2000 (and higher) systems.
NetGrab, 2/7/2008
Shows how to use the AsyncRead method of VB5/6 UserControls to download anything to memory or file.
NetUrl, 4/17/2000
Crack or create a conformant URL into/from its constituent elements.
NetUser, 9/24/2004
Obtain information about current user, as provided by USER_INFO_3 and GROUP_INFO_2.
NetWksta, 7/22/1997
Obtain information about current workstation, as provided by WKSTA_INFO_102 and WKSTA_USER_INFO_1.
ObjArrays, 2/5/2001
Create an array of objects that provide WithEvents functionality.
OpSys, 8/15/2001 VBA-Ready!
Determine what operating system your application is running under.
PassSniff, 8/24/1999
Search the system for windows with one characteristic (ES_PASSWORD), and retrieve "hidden" on pre-Win2000 systems.
PolyBtn, 8/14/1998
Create an irregularly shaped UserControl by generating a MaskPicture at runtime.
PrevInst, 2/21/2006
Communicate with previous instance to pass new command line, using WM_COPYDATA or DDE.
PrnInfo, 9/13/2006 VBA-Ready!
Hook into the Windows Print Queue to find and control print jobs for any printer.
ProgBar, 12/17/1995
Encapsulates a ProgressBar control within a drop-in class module.
RegSettings, 9/9/2005
Replacement for VB's native registry functions, that allows more freedom in where you can put your entries.
ResDemo, 4/12/2000
Shows how to play WAV files directly from RES files, as well as some other resource-based bitmap techniques.
Rgb, 7/3/2001
Break RGB colors into constituent red, green, and blue values.
RMenu, 4/2/1996
Hook into requests for, and provide your own, context menus on right-click.
RotFont, 8/24/1998
Rotate fonts to any angle, then use native Print function for output.
RunOnce, 11/30/1998
Startup automatically -- with machine or at login, once or always -- by making appropriate registry entries.
SendInput, 4/2/2010 VBA-Ready!
Drop in replacement for SendKeys, for use in environments (ie, Vista+) where that doesn't work.
Shell32, 6/9/2007 VBA-Ready!
Several techniques to "Shell and Wait" on Win32 systems.
Slurp, 7/7/1997
Shows how to use vbInet ActiveX server to suck a list of URLs from the internet to your local machine.
SnapDialog, 3/28/2008
Snap dialogs to the edges of screen. Supports multiple monitors and taskbar avoidance. Uses native subclassing.
Splash, 9/5/1999
What I consider the "correct way" to start up an application from Sub Main, showing a Splash screen to distract the user while you're initializing the main form.
Spool, 1/11/1999
Submit "print to disk" files directly to Windows print spooler.
StartupInfo, 4/26/2010 VBA-Ready!
Provides access to various startup parameters offered to all applications by Windows.
StatProg, 1/20/1999
Embed an "owner-drawn" progress bar within a standard StatusBar panel.
StockFont, 5/19/2009 VBA-Ready!
Provides easy means to select stock fonts (built into Windows) into any control with an hWnd property.
StopWatch, 4/26/2010 VBA-Ready!
Benchmark your code with millisecond resolution.
StrBldr, 4/23/2004 VBA-Ready!
Emulate the .NET StringBuilder class with extremely efficient string concatenation.
Streams, 11/3/2009 VBA-Ready!
Enumerate, delete, or otherwise manipulate Alternate Data Streams in any NTFS file.
SyncEvts, 5/15/1998
Several ways to share events (timers, in this demo) amongst multiple objects.
SysFolders, 12/21/2008 VBA-Ready!
Locate all the special system folders with a simple drop-in ready class module.
SysInfo, 11/17/2009
Catch Windows device notifications, system settings updates, and power status.
SysSnd, 4/21/1998
Enumerate all associatable sounds from the registry, and optionally play them. Simple routines to start and stop MIDI files, too.
TaskList, 2/13/2002
Recreation of Task Manager's Applications tab shows how to properly terminate processes.
TextOutline, 3/31/1999
Use GDI paths to create cool special effects with fonts by adding togglable properties such as FillColor and OutlineColor.
TimedMsg, 3/22/2000
Add a time-out to ordinary MsgBox's so they can be dismissed after some period of no user reaction.
TimerObj, 6/17/2005 VBA-Ready!
Code-based timer object for use in non-windowed (or VBA) situations. OCX included.
TimeZone, 5/4/2004
Retrieve timezone and daylight savings time information from the system.
Translucent, 7/10/2000
Create layered windows, to make forms translucent or irregularly shaped, using drop-in class.
Tray, 3/13/2012
Add your application's icon to the taskbar's notification tray (systray) properly. Updated for VB6 with native subclassing.
TreeRecurse, 8/20/1998
Recursively alter properties of TreeView nodes over entire tree or starting at any single branch.
Twiddle, 5/5/2000 VBA-Ready!
Twiddle bits with the best of them; extract low/hi bytes and words, combine to create larger datatypes, flip/read individual bits, shift, rotate, you name it.
UncName, 4/12/2000
Convert a drive-based filespec to UNC.
UpDown, 12/2/2002
Class-based replacement for the UpDown common control.
Uptime, 6/28/2010 VBA-Ready!
Determine how long since the computer was last rebooted.
Which, 9/24/2009
Finds first or all executables on path, or which executable is associated with a document file or extension.
WinRgn, 10/14/1999
Create an irregularly shaped form; drag a captionless form.
Wmf2Emf, 10/5/1999
Convert a Windows Metafile (WMF) to newer Enhanced Metafile (EMF).
WndPick, 12/18/2003
Capture cursor feedback outside your own window, like Spy++ does, to highlight and pick any window on the system.