Nov 28 2006
Delphi: WinExec, ShellExecute ou CreateProcess?
Quando preciso executar uma aplicação externa através de um executável, posso escolher entre esses três recursos (comandos): WinExec, ShellExecute ou CreateProcess.
Qual a diferença entre eles? O Fundão responde.
Resumidamente:
- WinExec: simples, porém não recomendado pela própria Microsoft, pois pode ser que futuramente não estará mais disponível;
- ShellExecute: utilizado quando existe a necessidade de abrir um arquivo conforme sua extensão. Também pode ser usado para rodar um executável qualquer;
- CreateProcess: o substituto do WinExec e, certamente, a melhor opção. Possui uma lista gigante de parâmetros, mas muitos deles não são utilizados e podem ser passados como nil ou 0 (zero). Veja um exemplo deste comando aqui.
Para saber mais sobre este e outros comandos, não deixe de conferir as sugestões de livros sobre Delphi que eu elaborei.
É isso aí. Até +!








Se eu preciso executar um programa
cmd := ‘”C:\Program Files\Vantive855\vantiv32.exe” ‘+frmLogin.edUsuario.Text+’ ‘+frmLogin.edSenha.Text;
onde eu estou passando o programa a ser executado o usuário e a senha do sistema. Caso eu não queira abrir
o progrma, mas apenas verificar se o usuário e a senha estão corretos, tem como eu retornar true e não abrir o programa ?
Acho que você poderia forçar o retorno do CreateProcess conforme a situação, veja:
“Se CreateProcess tiver sucesso o valor de retorno é diferente de zero. Se CreateProcess retorna 0, você deve chamar GetLastError para obter um código de erro indicando o que houve de errado.”
No seu caso, se o login falhou, faça com que o CreateProcess não obtenha sucesso na execução. Se deu certo, faça com que o retorno seja diferente de zero.
Até +.
Duvida
Gostei da dica, mais voce sabe como posso fazer ao contrario, caso eu tenha uma aplicacao feita em C#(Windows Application) e deseje carregar meu programa em delphi mais sem a necessidade de novamente passar o login para aplicacao, voce me indica alguma rotina para que a aplicacao delphi reconheca que ela foi startada com parametros e nao necessite usar a tela de login.
EX : cmd pagamento.exe adm adm 1
como essa rotina ira fica interna no programa ninguem sabera dessa senha administrativa. e caso a aplicacao seja startada com somente pagamento.exe ela ira rodar normalmente solicitando a tela de login.
Obrigado,
Bom dia!
Instalei no meu micro o active tracker, um programa, mas quando termina de instalar aparece o erro “createprocess falhou código 2″.
Você pode me ajudar a solucionar esse problema?
Ademir,
Tem certeza que esta mensagem está no mesmo contexto do post? O CreateProcess que apresentei é um comando/função do Windows.
Se, e somente se, estivermos falando da mesma coisa, talvez a informação abaixo possa te ajudar:
ERROR_FILE_NOT_FOUND 2 The system cannot find the file specified.
T+
[...] Já comentei há alguns dias que existem três formas para rodar uma aplicação externa em um programa escrito em Delphi. São elas: ShellExecute, WinExec e CreateProcess. [...]
Estou tentando instalar um programa da junta comercial no meu computador, mas da o seguinte erro… falha no winexec resultado 740, alguem pode me orientar o que devo fazer.
Olá, Colegas
Preciso, através do Delphi 7, mostrar 5 imagens através do visualizador de imagens do windows, é possivel?
Tentei usar o ShellExecute, mas só consigo mostrar uma imagem e não 5 ou mais passando como parâmetros.
Ex.: Tenho uma pasta com muitas fotos, sendo que 5 fotos para cada imovel, tenho no BD o relacionamento entre o imóvel e o nome da foto.
Abinálio
Estou tentanto executar em Delphi 7 tanto o WinExec como o ShellExecute, mas quando os executo é aberta uma nova instância do programa junto com uma janela do DOS, sendo que os o comando para executar na janela do DOS
Estou tentanto executar em Delphi 7 tanto o WinExec como o ShellExecute para executar um arquivo .bat, mas quando tento é aberta uma nova instância do programa junto com uma janela do DOS, sendo que a janela DOS fica travada e não executa o conteúdo do arquivo.
Ao clicar em um button ele executa um ou outro comando:
shellexecute (handle, ‘open’, ‘arquivo.bat’, ”, nil, sw_shownormal);
WinExec(’arquivo.bat’,sw_show)
O win exec Como que é a linha de programação. Tipo …
Que executar a calculadora como seria ?
Gostaria de um exmplo de aplicação para executala por outro programa.
tenho que abrir figuras quando clicar na imagem dela dentro do meu programa em delphi e quero que estas figuras abram diretamente no visualisador de imagens do windows
entendeu mas nao sei nem qual o nome do visualisador de imagens dentro do windows e quero chama lo ja mostrando a imagem em que cliquei
entendeu ??? saberia me dizer como ???