Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

1. Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

TIAGO LIMA
TIAGOLIMAME

(usa Outra)

Enviado em 17/11/2016 - 11:40h

Bom dia Pessoal;

ShellExecute(NULL,"Open","burn_cl",NULL,NULL, SW_SHOWNORMAL);

burn_cl é um arquivo .bat

como faço pra obter o valor de retorno deste arquivo .bat ?

Obrigado



  


2. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 17/11/2016 - 12:22h

Windows API?!

O você precisa eh o CreateProcess, e não o ShellExecute.
Esse shell só retorna se o processo executou okay.
Pesquise "msdn winapi CreateProcess", que irá cair na página de referência da Microsoft
--
Uilian Ries
Linux Counter: 521986


3. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

TIAGO LIMA
TIAGOLIMAME

(usa Outra)

Enviado em 17/11/2016 - 12:35h

uilianries


Estou fazendo estre progra no dev c++.
O que vc passou Também funciona neste caso ?


4. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/11/2016 - 12:41h

Parece-me que o que você quer é usa uma das funções da família de spawn() (https://msdn.microsoft.com/en-us/library/20y988d2.aspx), usando a opção _P_WAIT.

Note que essas funções são exclusivas do Windows e, portanto, não podem ser usadas num programa genérico.

-----
P.S.: Você podia ter pesquisado isso, não é? Eu também não sabia, e mesmo assim achei a informação.


5. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 17/11/2016 - 12:48h

Funciona em ambiente Windows, apenas. CreateProcess faz parte da API do Windows, estará presente no header include Windows.h.


--
Uilian Ries
Linux Counter: 521986


6. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

TIAGO LIMA
TIAGOLIMAME

(usa Outra)

Enviado em 17/11/2016 - 14:12h

paulo1205 escreveu:

Parece-me que o que você quer é usa uma das funções da família de spawn() (https://msdn.microsoft.com/en-us/library/20y988d2.aspx), usando a opção _P_WAIT.

Note que essas funções são exclusivas do Windows e, portanto, não podem ser usadas num programa genérico.

-----
P.S.: Você podia ter pesquisado isso, não é? Eu também não sabia, e mesmo assim achei a informação.




Paulo, não entendi a ideia. Talvez por não estar tão familiarizado com programação para pc.


7. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/11/2016 - 15:02h

A página que eu indiquei tem inclusive exemplos. Você se deu pelo menos o trabalho de lê-la?

Você já tentou usar system(), e não funcionou (ao contrário do UNIX, no Windows ela aparentemente não espera o comando terminar, ou não retorna o código de terminação do processo).

Agora tentou o ShellExecute(), que também não faz o que você queria (o que ele faz é simular a execução de uma aplicação através do Windows Explorer).

Eu estou propondo a você um jeito diferente: um processo chamando diretamente outro e aguardando que ele termine. Foi isso o que você deu a entender que queria no primeiro tópico que você criou (sobre system()).

A família de spawn() tem oito funções diferentes. Para saber qual a melhor para você, você tem de ler a documentação.


8. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

TIAGO LIMA
TIAGOLIMAME

(usa Outra)

Enviado em 17/11/2016 - 15:28h

paulo1205


Eu só quero executar um arquivo .bat e obter seu valor de retorno quando ele terminar de ser executado. Tudo isso dentro de um programa em C feito no DEV C++. Preciso saber o valor de retorno para tomar uma decisão. O arquivo .bat ja imprime na tela o valor de retorno, porem também não sei como capturar.


9. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/11/2016 - 16:06h

Afinal de contas, é valor de retorno, ou é a saída de texto do programa?

Para capturar o valor de retorno você tem de executar o programa externo através de uma função da família de spawn (por exemplo: spawnlp()).

Se você quiser redirecionar a saída do programa, então a sua pergunta teria de ter sido outra. E você teria de usar a função popen().


10. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

TIAGO LIMA
TIAGOLIMAME

(usa Outra)

Enviado em 17/11/2016 - 16:40h

paulo1205


Valor de retorno, ainda não entendi como usar o função spawnl(), muito confuso.


11. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 17/11/2016 - 16:49h

Olhe no link da referência que Paulo passou, no final da página tem exemplo. Para quase todas as funções a Microsoft coloca exemplo de uso.

Terá algo como :
_spawnl( _P_WAIT, argv[2], argv[2], "_spawnl", "two", NULL ); 

--
Uilian Ries
Linux Counter: 521986


12. Re: Como ler o valor de retorno do aplicativo chamado pelo ShellExecute()

TIAGO LIMA
TIAGOLIMAME

(usa Outra)

Enviado em 17/11/2016 - 17:26h

Jaja vão me xingar, pessoal, como disse não estou familiarizado com software para pc, Trabalho com software para sistemas embarcados. Ainda nao entendi o que é cada argumento que deve ser passado na função _spawnlp()

_spawnlp( _P_WAIT, argv[2], argv[2], "_spawnlp", "two", NULL );

Podem me ajudar? ja cliquei nos links todos , mas não acho.. acho que ja estou delirando com este problema.




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts