{--------------------------------------------------------}
{
{    Modulo de execução externa
{
{    Autor: Jose' Antonio Borges
{
{    Em 24/06/97
{
{--------------------------------------------------------}

unit dvExec;

interface
uses dvCrt, dvWin,
     winProcs, winTypes, strings, shellApi;

function executaProg (nomeProg, nomeDir, nomeArq: string): THandle;
procedure esperaProgVoltar;

implementation

var meuNome: array [0..101] of char;

function executaProg (nomeProg, nomeDir, nomeArq: string): THandle;
var
    pprog, pdir, pparam: array [0..145] of char;
    erro: tHandle;
begin
    strPcopy (pprog, nomeProg);
    strPCopy (pdir, nomeDir);
    strPcopy (pparam, nomeArq);

    GetWindowText(crtWindow, meuNome, 100);

    erro := ShellExecute(crtWindow, 'open', pprog, pparam, pdir, SW_SHOWNORMAL);

    executaProg := erro;
end;

{--------------------------------------------------------}
{        espera o titulo da janela ficar o mesmo
{--------------------------------------------------------}

procedure esperaProgVoltar;
var
    nomeNovo: array [0..100] of char;
    i: integer;
begin
    i := 0;
    repeat
        GetWindowText (getFocus, nomeNovo, 100);
        i := i + 1;
    until (strComp (meuNome, nomeNovo) <> 0) or (i > 5);

    repeat
        delay (1000);
        GetWindowText (getFocus, nomeNovo, 100);
    until strComp (meuNome, nomeNovo) = 0;
end;

end.