home *** CD-ROM | disk | FTP | other *** search
- {$A+,B-,D-,F-,G+,I-,K+,L+,N-,P-,Q-,R-,S-,T-,V-,W+,X+,Y-}
- {$M 8192,8192}
-
- Program EWExec;
-
- {$r EWEXEC.RES}
-
- uses
- objects,
- owindows,
- odialogs,
- omemory,
- strings,
- winprocs,
- wintypes,
- windos,
- win31,
- bwcc,
- ostddlgs,
- globsup;
-
- const
- id_mesg = 201;
-
- type
- buf = array[0..127] of char;
-
- pewemain = ^tewemain;
- tewemain = object(tapplication)
- procedure initmainwindow; virtual;
- end;
-
- pewe = ^tewe;
- tewe = object(tdlgwindow)
- shell,
- prog,
- parms,
- temp: buf;
-
- mesg: pstatic;
-
- constructor init(aparent: pwindowsobject; atitle: pchar);
- procedure initchildren;
- procedure setupwindow; virtual;
-
- procedure go;
- procedure doexec(var msg: tmessage); virtual wm_first + wm_timer;
- procedure ok(var msg: tmessage); virtual id_first + id_ok;
- end;
-
- constructor tewe.init(aparent: pwindowsobject; atitle: pchar);
- begin
- tdlgwindow.init(aparent, atitle);
- initchildren;
-
- shell[0]:=#0;
- prog[0]:=#0;
- parms[0]:=#0;
- temp[0]:=#0;
- end;
-
- procedure tewe.initchildren;
- begin
- mesg:=new(pstatic, initresource(@self, id_mesg, 126));
- end;
-
- procedure tewe.setupwindow;
- begin
- tdlgwindow.setupwindow;
-
- mesg^.settext('One moment...');
-
- settimer(hwindow, 1, 1500, nil);
- end;
-
- procedure tewe.go;
- var i: integer;
- begin
- if (paramcount = 0) then
- begin
- mesg^.settext('Invalid command line');
- messagebox(hwindow,
- 'EWEXEC progname [paramaters]'#13#10#13#10+
- 'example:'#13#10+
- 'EWEXEC WOLF3D.BAT -next',
- 'Syntax',
- mb_iconinformation or mb_ok);
- exit;
- end;
-
- strcopy(shell, getenvvar('COMSPEC'));
-
- strcopy(parms, ' /C ');
-
- strpcopy(prog, paramstr(1));
- strupper(prog);
-
- strcat(parms, prog);
- strcat(parms, #32);
-
- if (paramcount > 1) then
- for i:=2 to paramcount do
- begin
- strpcopy(temp, paramstr(i));
- strcat(parms, temp);
- strcat(parms, #32);
- end;
-
-
- if not exist(prog) then
- begin
- messagebeep(0);
- strcopy(temp, 'Could not find: ');
- strcat(temp, prog);
- mesg^.settext(temp);
- exit;
- end
- else
- begin
- strcopy(temp, shell);
- strcat(temp, parms);
- mesg^.settext(temp);
- end;
-
- if not exitwindowsexec(shell, parms) then
- begin
- messagebeep(0);
- strcopy(temp, 'Could not execute: ');
- strcat(temp, prog);
- mesg^.settext(temp);
- exit;
- end;
-
- end;
-
- procedure tewe.doexec(var msg: tmessage);
- begin
- killtimer(hwindow, 1);
-
- go;
- end;
-
- procedure tewe.ok(var msg: tmessage);
- begin
- killtimer(hwindow, 1);
-
- go;
-
- tdlgwindow.ok(msg);
- end;
-
- { main window }
- procedure tewemain.initmainwindow;
- begin
- MainWindow := New(pewe, Init(nil, 'MAINWINDOW'));
- end;
-
- var
- ewe: tewemain;
-
- begin
- ewe.init('EWE');
- ewe.run;
- ewe.done;
- end.