home *** CD-ROM | disk | FTP | other *** search
/ Millennium Time Capsule / AC2000.BIN / disks / ac15disk / hbasic / exec3.bas < prev   
BASIC Source File  |  1999-08-21  |  2KB  |  135 lines

  1.  
  2. REM $option k100
  3. REM $option !gy
  4.  
  5. DEFINT a-z
  6.  
  7. LIBRARY "gemaes","gemdos"
  8.  
  9. REM $include gemaes.bh
  10.  
  11. FUNCTION GetWholeEnvironment$
  12. STATIC i,res$,a$
  13. res$=""
  14. i=1
  15. DO
  16.     a$=ENVIRON$(i)
  17.     IF a$="" THEN EXIT LOOP
  18.     res$=res$+a$+CHR$(0)
  19.     INCR i
  20. LOOP
  21. GetWholeEnvironment$=res$
  22. END FUNCTION
  23.  
  24. FUNCTION killpath$ (path$)
  25. STATIC i,ch
  26. i=LEN(path$)
  27. DO
  28.     ch=ASC(MID$(path$,i,1))
  29.     IF ch="\"% OR ch=":"% THEN EXIT LOOP
  30.     IF i=1 THEN EXIT LOOP
  31.     DECR i
  32. LOOP 
  33. killpath$=LEFT$(path$,i)
  34. END FUNCTION
  35.  
  36. FUNCTION killname$ (path$)
  37. STATIC i,ch,dummy$
  38. i=LEN(path$)
  39. DO
  40.     ch=ASC(MID$(path$,i,1))
  41.     IF ch="\"% OR ch=":"% THEN EXIT LOOP
  42.     IF i=1 THEN EXIT LOOP
  43.     DECR i
  44. LOOP 
  45. dummy$=RIGHT$(path$,i)
  46.  
  47. i=LEN(dummy$)
  48. DO
  49.     ch=ASC(MID$(dummy$,i,1))
  50.     IF ch="."% THEN EXIT LOOP
  51.     IF i=1 THEN EXIT LOOP
  52.     DECR i
  53. LOOP
  54. killname$=LEFT$(dummy$,i-1)+"  "
  55. END FUNCTION
  56.  
  57. SUB Execute(nname$,commline$)
  58. SHARED menutree&
  59. STATIC junk&,junk,curhandle,i,curtop
  60. STATIC dummypath1$,dummypath2$,dummydrive,pe,mxprogs
  61. STATIC WindX,WindY,WindW,WindH,cur_top
  62.  
  63. mxprogs=PEEKW(PEEKL(GB+4)+ap_count)
  64. pe=0
  65. IF mxprogs=-1 THEN pe=100
  66.  
  67. junk=wind_get (0,WF_WORKXYWH,WindX,WindY,WindW,WindH)
  68. junk=wind_get (0,WF_TOP,cur_top,0,0,0)
  69.  
  70. dummypath1$=killpath$ (nname$)
  71. dummypath2$=CURDIR$
  72. dummydrive=dgetdrv
  73.  
  74. junk=dsetdrv (ASC(MID$(dummypath1$,1,1))-ASC("A"))
  75. CHDIR dummypath1$
  76.  
  77. junk&=pexec&(pe,nname$,commline$,GetWholeEnvironment$)
  78.  
  79. junk=dsetdrv (dummydrive)
  80. CHDIR dummypath2$
  81.  
  82. junk=wind_set (0,WF_TOP,cur_top,0,0,0)
  83. form_dial FMD_FINISH,0,0,0,0,WindX,WindY,WindW,WindH
  84.  
  85. END SUB
  86.  
  87. SUB va_send (to$,commline$)
  88. STATIC a$,a&,c$,c&,i,junk
  89.  
  90. a$=SPACE$(16) : a&=VARPTR(a$)
  91. 'c$="H:\MODS\INTRO.MOD"+CHR$(0) : c&=VARPTR(c$)
  92. c$=commline$+CHR$(0) : c&=VARPTR(c$)
  93.  
  94. i=appl_find(to$)
  95.  
  96. IF i=-1 THEN junk=form_alert (1,"[1][ VA server not found! ][ OK ]")
  97.  
  98. IF i<>-1 THEN
  99.     POKEW a&,&H4711
  100.     POKEW a&+2,PEEKW(PEEKL(GB+4)+4)
  101.     POKEW a&+4,0
  102.     POKEL a&+6,c&
  103.     POKEW a&+10,0
  104.     appl_write i,16,a&
  105. END IF
  106. END SUB
  107.  
  108.  
  109. SUB ViewFileMulti (filename$,comm$)
  110. STATIC mxprogs,editorva$,junk
  111.  
  112. mxprogs=PEEKW(PEEKL(GB+4)+ap_count)
  113.  
  114. IF filename$="" THEN
  115.     junk=form_alert (1,"[1][ No editor set! ][ OK ]")
  116. ELSE
  117.     IF mxprogs=-1 THEN
  118.         editorva$=killname$ (filename$)
  119.         IF appl_find (editorva$)<>-1 THEN    ' ie program already running
  120.             CALL va_send (editorva$,comm$)
  121.         ELSE
  122.             CALL Execute (filename$,comm$)
  123.         END IF
  124.     ELSE
  125.         CALL Execute (filename$,comm$)
  126.     END IF
  127. END IF
  128.  
  129. END SUB
  130.  
  131. a$="D:\EVEREST\EVEREST.PRG"
  132. b$="C:\EMAIL.TXT"
  133. CALL ViewFileMulti (a$,b$)
  134. er=form_alert (1,"[1][ Finished ][ OK ]")
  135. STOP -1