diff options
Diffstat (limited to 'apps/windoze/CBuilder4/UninstCust/CoolTools.cpp')
-rw-r--r-- | apps/windoze/CBuilder4/UninstCust/CoolTools.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp b/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp new file mode 100644 index 0000000..451aa35 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp @@ -0,0 +1,55 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#include <dos.h> +#pragma hdrstop +//--------------------------------------------------------------------------- +// Important note about DLL memory management when your DLL uses the +// static version of the RunTime Library: +// +// If your DLL exports any functions that pass String objects (or structs/ +// classes containing nested Strings) as parameter or function results, +// you will need to add the library MEMMGR.LIB to both the DLL project and +// any other projects that use the DLL. You will also need to use MEMMGR.LIB +// if any other projects which use the DLL will be perfomring new or delete +// operations on any non-TObject-derived classes which are exported from the +// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling +// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases, +// the file BORLNDMM.DLL should be deployed along with your DLL. +// +// To avoid using BORLNDMM.DLL, pass string information using "char *" or +// ShortString parameters. +// +// If your DLL uses the dynamic version of the RTL, you do not need to +// explicitly add MEMMGR.LIB as this will be done implicitly for you +//--------------------------------------------------------------------------- +USERES("CoolTools.res"); +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- +extern "C" { + +DWORD APIENTRY __export launchAndWait(LPCSTR cmdLine, LPCSTR workDir) { + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + DWORD ExitCode = -1; + + GetStartupInfo(&StartupInfo); + if (CreateProcess(NULL, (char *)cmdLine, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, workDir, &StartupInfo, &ProcessInformation)) { + do { + _sleep(1); + GetExitCodeProcess(ProcessInformation.hProcess, &ExitCode); + } while (ExitCode == STILL_ACTIVE); + } + else { + LPVOID lpMsgBuf; + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); + MessageBox(NULL, (const char *)lpMsgBuf, "Error", MB_OK|MB_ICONINFORMATION); + LocalFree(lpMsgBuf); + } + return ExitCode; +} + +}
\ No newline at end of file |