home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 May / CMCD0504.ISO / Software / Shareware / Comunicatii / pyrobatch / pyrobatchftp.exe / setup.fil / pyrobatchcontrol / visualcdemo / pyrobatchcontrol.c next >
Encoding:
C/C++ Source or Header  |  2002-08-22  |  2.7 KB  |  100 lines

  1.  
  2.  
  3. #include <windows.h>
  4. #include <stdio.h>
  5.  
  6.  
  7. int main(int, char **);
  8. int RunPyroScript(void);
  9.  
  10.  
  11.  
  12. #define ISOK(result) (atoi(result+1)>=200 && atoi(result+1)<=299)
  13.  
  14.  
  15.  
  16. //-------------------------------------------------------------------------
  17. //  main function to test 
  18. //-------------------------------------------------------------------------
  19. int main(int argc, char **argv)
  20. {
  21.     int ok= RunPyroScript();
  22.  
  23.     return ok ? 0 : 1;
  24. }
  25.  
  26.  
  27. //-------------------------------------------------------------------------
  28. //  function to execute commands in PyroBatch via PYROBATCHCONTROL.DLL
  29. //-------------------------------------------------------------------------
  30. int RunPyroScript(void)
  31. {
  32.     int ok, allok= FALSE;
  33.     char result[1024]= "", initresult[1024];
  34.     const char *dllname= "..\\pyrobatchcontrol\\debug\\pyrobatchcontrol.dll";
  35.     HINSTANCE hinstPyroBatchControl= NULL;
  36.     int (__stdcall *fnPyroBatch)(const char *app, const char *command, char *result, int resultmax)= NULL;
  37.  
  38.  
  39.     // load pyrobatchcontrol.dll and get address of PyroBatch function
  40.     hinstPyroBatchControl= LoadLibrary(dllname);
  41.     if (hinstPyroBatchControl) {
  42.         fnPyroBatch= (int (__stdcall*)(const char *app, const char*,char*,int))GetProcAddress(hinstPyroBatchControl, "_PyroBatch@16");
  43.     }
  44.  
  45.  
  46.     // if dll found and ok
  47.     if (fnPyroBatch) {
  48.         const char *app= "pyrobatch";
  49.  
  50.  
  51.         // start pyrobatch.exe or initiate communication with existing instance
  52.         ok= fnPyroBatch(app, "start", initresult, sizeof(initresult));
  53.         printf("%d %s\n", ok, initresult);
  54.  
  55.  
  56.         if (ok && ISOK(initresult)) { // pyrobatch.exe running
  57.             ok= fnPyroBatch(app, "Connect 'duke', 'test', 'asdf'", result, sizeof(result));
  58.             printf("%d %s\n", ok, result);
  59.  
  60.             if (ok && ISOK(result)) {  // ok, connected
  61.                 ok= fnPyroBatch(app, "LocalChDir 'd:\\t'", result, sizeof(result));
  62.                 printf("%d %s\n", ok, result);
  63.  
  64.                 ok= fnPyroBatch(app, "Get 'new.mdb'", result, sizeof(result));
  65.                 printf("%d %s\n", ok, result);
  66.                 allok= ok; // an ok here is what we really want
  67.  
  68.                 ok= fnPyroBatch(app, "Disconnect", result, sizeof(result));
  69.                 printf("%d %s\n", ok, result);
  70.             }
  71.  
  72.             // disconnect from pyrobatch
  73.  
  74.             if (strncmp(initresult, "#200", 4)==0)    // just unattach (pyrobatch.exe was already running)
  75.                 ok= fnPyroBatch(app, "bye", result, sizeof(result));
  76.             else
  77.             if (strncmp(initresult, "#201", 4)==0)    // close pyrobatch (we started it)
  78.                 ok= fnPyroBatch(app, "term", result, sizeof(result));
  79.  
  80.             printf("%d %s\n", ok, result);
  81.         }
  82.     }
  83.     else {
  84.         printf("could not load %s\n", dllname);
  85.     }
  86.  
  87.     
  88.     // unload pyrobatchcontrol.dll
  89.     if (hinstPyroBatchControl) {
  90.         FreeLibrary(hinstPyroBatchControl);
  91.         hinstPyroBatchControl= NULL;
  92.         fnPyroBatch= NULL;
  93.     }
  94.  
  95.     return allok;
  96. }
  97.  
  98.  
  99.  
  100.