Fórum Aguardar execução #198512
02/12/2003
0
Tenho um sistema de comunicação remota, e dentro de uma DLL criei uma função que realiza a discagem.
Porem quando chamo esta função dentro da minha aplicação a função me retorna um resultado sem a discagem ser concluida!!!
Isto é, gostaria de algo para aguardar o termino do processo de discagem para depois enviar o result.
Conto com a colaboração de todos
Porem quando chamo esta função dentro da minha aplicação a função me retorna um resultado sem a discagem ser concluida!!!
Isto é, gostaria de algo para aguardar o termino do processo de discagem para depois enviar o result.
Conto com a colaboração de todos
_||bern||_
Curtir tópico
+ 0
Responder
Posts
03/12/2003
Deus
Bem, eu tenho uma função chamada ExecuteAndWait, que funciona assim:
Com essa função, você manda executar qualquer comando, e ela só termina a função quando o comando for executado. Agora o único problema, talvez, é que o comando não é um comando delphi, mas sim um comando do tipo que você digitaria no ´Run´ do Windows. Não sei se serve, então, mas qualquer coisa é só você modificar a função na sua dll para, ao chamar o comando externo, ele chame usando essa função.
Espero ter ajudado!
Abraços, dEUS
function ExecuteAndWait(const CommandLine : string) : cardinal; var tSI : TStartupInfo; tPI : TProcessInformation; dwI : DWORD; ErrUINT: UINT; begin Result := ErrUINT; FillChar(tSI, sizeof(TStartupInfo), 0); tSI.cb := sizeof(TStartupInfo); if (CreateProcess(nil, pchar(CommandLine), nil, nil, False, 0, nil, nil, tSI, tPI)) then begin dwI := WaitForSingleObject(tPI.hProcess, INFINITE); if (dwI = WAIT_OBJECT_0) then if (GetExitCodeProcess(tPI.hProcess, dwI)) then Result := dwI; CloseHandle(tPI.hProcess); CloseHandle(tPI.hThread); end; end;
Com essa função, você manda executar qualquer comando, e ela só termina a função quando o comando for executado. Agora o único problema, talvez, é que o comando não é um comando delphi, mas sim um comando do tipo que você digitaria no ´Run´ do Windows. Não sei se serve, então, mas qualquer coisa é só você modificar a função na sua dll para, ao chamar o comando externo, ele chame usando essa função.
Espero ter ajudado!
Abraços, dEUS
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)