home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 035 / kwclass.zip / KPROGRAM.CPP < prev    next >
C/C++ Source or Header  |  1994-04-18  |  2KB  |  74 lines

  1. #define _OS2_
  2. #define INCL_PM
  3. #define INCL_BASE
  4. #include <os2.h>
  5. #include <kprogram.hpp>
  6. #include <iexcept.hpp>
  7. #include <ireslib.hpp>
  8.  
  9. KProgram::KProgram(char const *strName, char const *strTitle, 
  10.                    char const *strInput, char const *strEnv)
  11.   : name(strName)
  12.   , title(strTitle)
  13.   , input(strInput)
  14.   , env(strEnv)
  15. {
  16. }
  17.  
  18. KProgram::KProgram(const IResourceId nameId, const IResourceId titleId, 
  19.                    const IResourceId inputId, const IResourceId envId)
  20.   : name(nameId.resourceLibrary().loadString(nameId))
  21.   , title(titleId.resourceLibrary().loadString(titleId))
  22. {
  23.   if (inputId)
  24.     input = inputId.resourceLibrary().loadString(inputId);
  25.   if (envId)
  26.     env = envId.resourceLibrary().loadString(envId);
  27. }
  28.  
  29.  
  30. unsigned long KProgram::run()
  31. {
  32.    STARTDATA sd;
  33.    IString objectErrorBuffer(0, 255, ' ');
  34.  
  35.    sd.Length      = sizeof(sd);
  36.    sd.Related     = SSF_RELATED_INDEPENDENT;
  37.    sd.FgBg        = SSF_FGBG_FORE;
  38.    sd.TraceOpt    = SSF_TRACEOPT_NONE;
  39.    sd.PgmTitle    = title;
  40.    sd.PgmName     = name;
  41.    if (input.length())
  42.       sd.PgmInputs   = input;
  43.    else
  44.       sd.PgmInputs   = 0;
  45.    if (env.length())
  46.       sd.Environment = env;
  47.    else
  48.       sd.Environment = 0;
  49.    sd.TermQ       = 0;
  50.    sd.InheritOpt  = SSF_INHERTOPT_SHELL;
  51.    sd.SessionType = SSF_TYPE_DEFAULT;
  52.    sd.IconFile    = 0;
  53.    sd.PgmHandle   = 0;
  54.    sd.PgmControl  = SSF_CONTROL_VISIBLE;
  55.    sd.InitXPos    = 25;
  56.    sd.InitYPos    = 25;
  57.    sd.InitXPos    = 200;
  58.    sd.InitXPos    = 150;
  59.    sd.ObjectBuffer = objectErrorBuffer;
  60.    sd.ObjectBuffLen = 255;
  61.  
  62.    ULONG ulSessionID;
  63.    PID   pidProcessID;
  64.    APIRET apiret = DosStartSession(&sd, &ulSessionID, &pidProcessID);
  65. #if 0
  66.    if (apiret != 0)
  67.       ITHROWSYSTEMERROR(apiret, "DosStartSession", 
  68.                         IErrorInfo::accessError,
  69.                         IException::recoverable);
  70. #endif
  71.    return apiret;
  72. }
  73.  
  74.