home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 April / PCWorld_2000-04_cd.bin / Software / Servis / Devc / _SETUP.6 / Group16 / loadexe.c < prev    next >
C/C++ Source or Header  |  1998-02-25  |  1KB  |  48 lines

  1. /*
  2.  * This program attempts to load expexe.exe dynamically, get the address of the
  3.  * ExportedFromExe function, and then call it.
  4.  *
  5.  * This example DOES NOT WORK! I don't know exactly what can be done, but
  6.  * it simply seems that LoadLibrary refuses to load executables.
  7.  */
  8.  
  9. #include <stdio.h>
  10. #include <windows.h>
  11.  
  12. int (*ExportedFromExe)();
  13.  
  14. int main()
  15. {
  16.     HINSTANCE    hDll;
  17.     int i, j, k;
  18.  
  19.     hDll = LoadLibrary ("expexe.exe");
  20.     if (!hDll)
  21.     {
  22.         printf ("Error %d loading exe.\n", GetLastError());
  23.         exit (-1);
  24.     }
  25.  
  26.     if (!(ExportedFromExe = GetProcAddress (hDll, "ExportedFromExe")))
  27.     {
  28.         printf ("Error %d getting ExportedFromExe function.\n",
  29.             GetLastError());
  30.         exit (-1);
  31.     }
  32.     else
  33.     {
  34.         ExportedFromExe ();
  35.     }
  36.  
  37.     /* NOTE: Unlike a DLL the exe doesn't have an entry point which
  38.      *       initializes global objects and adds __do_global_dtors to
  39.      *       the atexit list. Thus it should be safe(?) to free the
  40.      *       library. Of course, this also makes it unsafe to use
  41.      *       executables at all in this manner.
  42.      */
  43.     FreeLibrary (hDll);
  44.  
  45.     return 0;
  46. }
  47.  
  48.