OK. I stepped back from the whole thing to see the bigger view, took a couple of deep breaths, and decided maybe I was going about this all wrong.
I created a new project, imported my existing code, and everything works fine now. I looked at the differences and found that BCCB creates a main procedure named DLLEntryPoint() instead of DLLMain(), so my first thought is that DLLMain() was eating the PROCESS_ATTACH messages. I got rid of DLLMain() and things were still functional, so I got brave and got rid of DLLEntryPoint also. Things are still functional. I realize that Microsoft's and Borland's documentation say that the functions are optional entry points into the DLL, but I never tried to build a DLL without either one of them before. Seems to make no difference. The fact that my code works even with the original DLLMain() function in place seems to point to a corrupted project and I'm content to let it lie at that. I now have a BCCB functional stub consisting of a project file, a header file, and a c file which I can either post here if the moderators don't mind a zip attachment, or make available some other way as a starter for anyone else who wants to create a plugin using Borland C++ Builder. -Mark Wieder Using The Bat! v1.63 Beta/4 on Windows 2000 5.0 Build 2195 Service Pack 2 -- ________________________________________________ Current version is 1.62 | "Using TBDEV" information: http://www.silverstones.com/thebat/TBUDLInfo.html

