Here are some components, programs and documentation I have written. Most are for C++/Win32.
Featured utility: The Editable Web The Editable Web is an easy way to edit your web pages online, within the web-browser, with WYSIWIG text-editing. It's like a wiki but faster and easier (and not for collaboration). I use it to write and maintain this website!
Utilities
- Editable Web - an easy way to edit your web pages online, within the web-browser, with WYSIWIG text-editing. It's like a wiki but faster, easier, and not for collaboration. It's used to write and maintain this website!
- Catalog - recursively scans your Pictures directory and makes a compact thumbnail gallery for it. Includes a python version and a win32/GDI+ version.
- Unison-ssh - a handy "ssh" for Windows users of the Unison file synchronizer. The source code shows how to run a child process and capture its input/output with pipes.
- Keymouse - turns the right "alt" key into the right mouse button, for people who have one-button mice... The source code shows how to install low-level keyboard procs. If you know C++, you can intercept any other key (eg. to disable the Windows key!)
- iTunes Password Clicker - automatically clicks "ok" when itunes asks for your password. The source code shows how to watch for pop-up dialogs.
- Audio Conversion - several scripts for batch converting between wma, wav, mp3, rm
- PicturesForDVD - if you have several directories of pictures, this utility can help prepare them for putting on a CD or DVD.
- Rm2podcast - For websites that stream only in realaudio format, this turns it into a podcast
- Eye On The Web - This Windows Vista sidebar gadget displays a snippet of any web page, on your desktop
- Analog helper applications - Analog, by Stephen Turner, is a free program for website logfile analysis. I have written some helper applications for it.
Screen savers
- Holistic screen saver development - this technical article has my distilled experience from seven years of writing screen savers: how best to structure the code, how best to deploy it, and how to write code that will avoid thousands of technical-support emails! Also with C++ source code for several examples, including sprites, audio and 3d.
- How to write a screen saver - a technical article with details on all the APIs, resources, configuration settings & interactions that go on in a Windows screensaver.
- ScrPlus - a development kit I wrote for programming screen savers. This is useful if you like using BCB5. But the best thing to do is start with the examples in first link, above.
Internet code-samples
- Webform - how to embed IWebBrowser2, the Microsoft MSHTML web-control, inside your applications. In C++/win32, with no ATL.
- BHO - how to write a Browser Helper Object (also called a "plug-in") for Internet Explorer. In C++/win32, with no ATL.
- MAPI Utils - using MAPI, this code shows how to traverse profiles, message-stores, folders and messages in Microsoft Outlook.
- DBX Utils - traverse profiles, message-stores, folders and messages for Outlook Express
- Zip Utils - a small, clean API for zipping and unzipping files. All you need do is add "zip.cpp" to your application if you want zipping support, or "unzip.cpp" if you want unzipping.
- Zip & Ogg (zipogg.zip, 688k) - complete self-contained C++ code for playing ogg files, without any DLLs or LIB dependencies. Includes several example projects - a program that plays ogg music embedded as a resource, another that streams it from a resource or file, and some programs that zip and unzip directly to/from memory.
- Install/unzip (instzip.zip, 81k) - do you ever get irritated with installers which unzip their payload to a temporary location, then execute the installer there, which copies the files over to the final location? This program is a self-contained installer, which unzips its payload directly into the final location.
- Packsetup2 - another setup/installer thing. This takes a directory and packages it up as a self-extracting installer.
- AVS installer (avs-installer.zip, 134k) - a cut-down installer I wrote for distributing AVS presets (visualizations for Winamp)
- Sun and moon times (sunmoon.zip, 357k) - submits a POST request to a webserver and formats the result. It uses the Indy HTTP components to make the request. The actual data are sun and moon setting times. I have a nicer version of this program as a web-service: Sun and Moon Times.
- Divine Office (divoff.zip, 50k) - uses InternetOpen, InternetOpenUrl &c. to retrieve HTML from the internet.
- GetBounds - how to calculate an element's bounding rectangle in Javascript, to work around Firefox bugs with offsetTop/offsetLeft.
Graphics code-samples
- AVI utils - source code for creating AVI files, both audio and video.
- 1bpp - convert a bitmap to 1bpp monochrome in C#, fast. The source code illustrates how to program gdi32, the windows graphics library, from C#.
- GetImageSize - routines in C++/stdio and in PHP to get the dimensions of GIF/JPEG/PNG image files.
- PNG Bounding Box (pngbb.zip, 68k) - earlier versions of Photoshop failed to export the real size (inches/cm) of the image and only stored raster size (pxiels). This program adds real size information, which allows the PNGs to be used in latex. The code shows how to read PNG headers.
- GLenum (glenum4.zip, 277k) - lists all the drivers, all details, all pixel formats on your system.
- Palette Animation (palanim.zip, 39k) - this is the best example code I've seen for palette animation. It comes from the old Microsoft WinG development kit, and I've tidied it up a little to make it compile cleanly under Win32.
- Playres (playres.zip, 54k) - plays an AVI that's embedded as a resource.
- WMP vizs (wmp_viz.zip, 67k) - example visualizations for Windows Media Player. I created these because the new-viz wizard supplied by Microsoft only works in VisualC++6 (not in BCB or VS.NET). And also because that wizard generates a lot of unnecessary COM-junk.
- TRealMetafile (wmf2tex.zip, 190k) - a class which gives low-level control over the contents of a metafile. You can play it record by record. Supports and distinguishes between WMF and EMF. Shows how you might generate EPS from it. Or, you could look at the metafile example code from Microsoft which is more straightforward...
- MS metafile examples (ms-emf.zip, 295k) - microsoft's metafile example code and documentation.
Win32 code-samples
- ShellExecute (shellex.zip, 19k) - how to use ShellExecute and CreateProcess.
- Autoplay (autoplay.zip, 20k, for BCB3) - an autoplay program for a CD
- Shell links (shelllink.zip, 157k) - how to create shortcuts on the start menu
- GetModuleNameFromHWnd (modname.zip, 20k) - retrieves the application that owns a given HWND window.
- SetDlgItemUrl - this routine turn a static text in a dialog, into a blue underlined hyperlink. It does it all with subclassing, and is very easy to use.
- Crlf - for translating unix LF text files into windows CRLF. It was designed to integrate seamlessly into windows, but stopped working as of XP.
- MailNotify (mailnotify.zip, 39k) - an icon in the system tray which periodically makes an SSH connection to a unix machine, remotely executes a console command there (in this case a command to check for mail), and captures the output of that console command.
Debugging
- Ms-dbg (ms-dbg.zip, 133k) - This brings microsoft-compatible debugging information to Borland. With "map2dbg" you can convert from a borland MAP file to a microsoft DBG file. This lets you use standard debugging tools like DrWatson and imagehelp.dll. For instance, in "calldemo" we use it to generate a callstack of the current program. I'm sorry but I don't have BCB6 and haven't updated ms-dbg to work with it. If you've updated it, please email me and I'll put it up on this website.
- PE files (pe.zip, 312k) - the PE file format. PE files are win32 executables (DLLs and EXEs). I've collected here some documentation and source code written by other people. Also I've added my own program resupdate to update the resources in an executable. It even works on unix/linux! so you could write a webserver which serves up custom-modified executables.
- Watch2 (watch2.zip, 144k) - a simplistic bit of source code that overrides new/delete/malloc/free to check that all memory is freed. There are better alternatives out there...
Components for Borland C++Builder
- Audio-sampling (for BCB3, BCB4 and BCB5) - lets you sample sound from line-in and displays it. Components include TRecorder and TFFT (non-visual) to gt the data in and fourier-transform it, and TWaveView, TSpectralView and TFingerprintView (visual) to display it. Comes with full source code.
- Animation-timer (for BCB3, BCB4 and BCB5) - fast, responsive multi-threaded replacement for TTimer. It's drop-in compatible with the regular TTimer. But it is much faster. And also uses a special design so that, no matter how fast you set it, it doesn't interferes with user-responsiveness. Comes with full source code.
- Flame-panel (for BCB4). Displays an animated flame. Just for fun. Comes with full source code.
- Lucian's setup (for BCB4). An installer program. Useful for distributing components. Doesn't work under Win2000/XP/Vista alas. Comes with full source code.
- NotifyEdit - a validating edit control for BCB. Comes with full source code.
- GetRight Monitor (for BCB5, 719k) - to integrate with the download-manager GetRight. With this component you can display its current download status.
- Open Tools API Browser (for BCB3, BCB4, BCB5) - The Open Tools API (formerly known as "Tools Services Browser") lets you add experts, menus &c. to the Borland IDE. It's poorly documented and hard to use: this code lets you experiment with the API visually before you start coding.
- IDEScript (for BCB3/4, 35k) - as well as using the Open Tools API, you can also get hold of the TTabControl and TEdit and other components that make up the IDE. This code lets you browse through the components and spoof clicks on menu items.
- Multiline Editor (mult.zip, for BCB3/4, 27k) - an example of IDEScript. This one makes it so the tabs at the top of the editor get split over multiple lines, by setting the TTabControl::MultiLine property.
- PlainWin32 (plainwin32.zip, 42k, BCB5) - a small toy expert built using the Open Tools API. This adds a File>NewApplication>PlainWin32 expert, one that does further customization on the code after it's been generated.
- Code Expert (codeexp.zip, 420k) - a system I developed to help when you write a code-generating expert. It has a sort of script/macro language that your expert can execute, with commands like --CreateComponent and --CreateForm and PropertyName=Value, so that the expert can create forms and components.

Gracias, la unica luz para poder tocar archivos OGG
Un abrazo
Guadalupe
rosario1906_28@hotmail.com
1111
it's great that you have the utility for creating avi. how about exporting the frames? do you have those?
thanks
edmondwee@hotmail.com
Nice Code :D
ni tai niu le ( in chinese pinyin ) . accesine
thank you for your DBX Utils
Hello,
do you have any version of oyur Audio Samplig Comp for DELPHI?? have any component to display an audio file waveform?
THANKS IN ADVANCE
Montxo Garcia
email to: montxo@zio-audio.com
Hello,
Audio Sampling compo can`t recompiled in bcb6 ? why ?
I have changed to <designintf.hpp>, still dont work?
Can u help, thank u first.~
Hi. This site has extremely informative contents. Thank you for that.
I was looking at your BHO code. Do you know how to intercept/get all URLS that are in a website using the BHO? Could you let me know if you know it? My email is Nicholas.G5@gmail.com
Thanks.
Any plans to update zip_utils to the latest zlib version 1.2.3?