Buscar
10 1 Curtir 2
Introdução
http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 1/10
8/10/2014 Usando ShellExecute para executar aplicativos externos
Nas nossas aplicações comerciais muitas vezes precisamos interagir com ferramentas
externas, o que nos leva a buscar funções do Delphi como WinExec, a mais conhecida, mas
Iremos verificar nesta dica como utilizar o ShellExecute, funcionalidade da API do Windows,
para executar aplicativos externos. Também iremos verificar que podemos enviar arquivos
A função ShellExecute funciona como o menu Executar do Windows, e este é o seu melhor
vai abrir o WordPad ou outro software associado para abrir documentos MS-Word. Se
requisitado.
A estrutura do Comando
DEVMEDIA LOGIN
O comando ShellExecute tem a seguinte assinatura:
Onde:
Operation: Tipo de operação que se quer executar. Pode ser 'open', 'print' ou 'explorer'
Parameters: Parâmetros a serem passados para o FileName que vai ser aberto. Este
ShowCmd: indica o tipo de janela que deve ser aberta. Podemos utilizar por exemplo
http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 2/10
8/10/2014 Usando ShellExecute para executar aplicativos externos
Retorno: A função possui erro quando o retorno é menor ou igual a 32. Exemplos de erros
Vamos verificar alguns exemplos de comandos que podem ser executados com o
nossos estudos. Você consegue simular a ação de open e explorer acessando o menu "Run" ou
"Executar" do Windows.
edArquivo.Text := 'c:\clubedelphi\teste.doc';
ShellExecute(handle,'open',PChar(edArquivo.Text), '','',SW_SHOWNORMAL);
Imprimindo o arquivo:
edArquivo.Text := 'c:\clubedelphi\teste.doc';
ShellExecute(handle,'print',PChar(edArquivo.Text), '','',SW_SHOWNORMAL);
edArquivo.Text := 'c:\clubedelphi\';
http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 3/10
8/10/2014 Usando ShellExecute para executar aplicativos externos
ShellExecute(handle,'explore',PChar(edArquivo.Text), '','',SW_SHOWMAXIMIZED);
Criando uma nova mensagem com o cliente de email padrão definindo para quem vai a
edArquivo.Text := 'mailto:dwildt@dug-rs.org?cc=dug-rs@dug-
ShellExecute(handle,'open',PChar(edArquivo.Text), '','',SW_SHOWNORMAL);
edArquivo.Text := 'http://www.clubedelphi.net';
ShellExecute(handle,'open',PChar(edArquivo.Text), '','',SW_SHOWNORMAL)
Conclusões
Com esta dica verificamos como trabalhar com a função ShellExecute. Veja o exemplo para
download que permite que você selecione arquivos e execute as operações de open, print e
Daniel Wildt é um Desenvolvedor de Software com 11 anos de experiência professional, atuando em uma
empresa global com projetos de software. Certificado e expert em Java, Delphi, tecnologias .NET e agora
andando pelo mundo do Ruby [...]
http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 4/10
8/10/2014 Usando ShellExecute para executar aplicativos externos
Luiz Amável
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)
Ztw Tecnologia
excelente dica, só faltou mencionar que é necessário incluir a Shellapi nos Uses.
Vinícius
Olá...
abraços!
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellAPI;
type
TForm1 = class(TForm)
http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 5/10
8/10/2014 Usando ShellExecute para executar aplicativos externos
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
Micaela Diniz
Oi alguem pode me ajudar? Usei esse mesmo comando
'ShellExecute(handle,'explore',PChar(edArquivo.Text), '','',SW_SHOWMAXIMIZED);' só que criei
uma variável do tipo String e dentro dela coloquei o diretório de um arquivo usado no
SaveDialog, o código ficou assim
x := DataModule.SaveDialog.FileName; ShellExecute(handle,'explore',PChar(x),
'','',SW_SHOWMAXIMIZED);
Ele trás o diretório completo mas simplesmente não faz nada quando passa pelo comando.
Alguém tem alguma solução para o caso?
Douglas Claudio
Olá Micaela, obrigado pelo seu comentário.
http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 6/10
8/10/2014 Usando ShellExecute para executar aplicativos externos
Um abraço.
Qual versão do Delphi você está utilizando? Já tentou trocar o PChar por PAnsiChar?
Abraços,
Daniel
Publicidade
Serviços
Inclua um comentário
+Delphi
Mais posts
Curso Online
Video aula
Video aula
Video aula
Video aula
Video aula
Revista
http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 8/10
8/10/2014 Usando ShellExecute para executar aplicativos externos
Pocket Video
Video aula
Video aula
DevMedia
Curtir
http://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613 10/10