Usando ShellExecute para executar aplicativos externos
Neste artigo vamos sobre como usar ShellExecute para executar Aplicativos Externos, pois muitas vezes precisamos interagir com ferramentas externas.
Introdução ao ShellExecute
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 que também só é utilizada por compatibilidade.
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 diretamente para a impressora e abrir pastas do WindowsExplorer com este comando.
A função ShellExecute funciona como o menu Executar do Windows, e este é o seu melhor benefício de uso. Se colocamos ali um path de internet, o sistema abre o Navegador padrão, se colocamos um caminho de um arquivo .doc, o sistema vai abrir o WordPad ou outro software associado para abrir documentos MS-Word. Se colocamos um caminho, o sistema abre uma janela do explorer posicionado no caminho requisitado.
A estrutura do Comando ShellExecute
O comando ShellExecute tem a seguinte assinatura:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST;
Onde:
- hWnd
Handle da Janela que está executando o Comando. - Operation
Tipo de operação que se quer executar. Pode ser 'open', 'print' ou 'explorer'. - FileName
O arquivo que se quer abrir. - Parameters
Parâmetros a serem passados para o FileName que vai ser aberto. Este parâmetro é útil no caso de se passar no FileName o caminho de um executável. - Directory
O diretório onde a aplicação deve executar. - ShowCmd
indica o tipo de janela que deve ser aberta. Podemos utilizar por exemplo SW_HIDE (deixa a janela invisível), SW_MAXIMIZE (janela maximizada), SW_MINIMIZE (janela minimizada), SW_SHOWNORMAL (abre a janela restaurada e ativa). - Retorno
A função possui erro quando o retorno é menor ou igual a 32. Exemplos de erros que podem ser testados são ERROR_FILE_NOT_FOUND (arquivo não encontrado), ERROR_PATH_NOT_FOUND (caminho não encontrado), SE_ERR_ACCESSDENIED (o programa não tem direito para acessar o arquivo/programa requisitado), SE_ERR_ASSOCINCOMPLETE (arquivo requisitado não possui associação definida), SE_ERR_SHARE (Violação de Compartilhamento), entre outros erros que podem ser mapeados.
Exemplos com ShellExecute
Vamos verificar alguns exemplos de comandos que podem ser executados com o ShellExecute. Vamos utilizar o arquivo "c:\clubedelphi\teste.doc" como exemplo para os nossos estudos. Você consegue simular a ação de open e explorer acessando o menu "Run" ou "Executar" do Windows.
Abrir o arquivo com o programa associado:
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);
Abrindo a pasta 'c:\clubedelphi' e colocando a janela em modo Maximizada:
edArquivo.Text := 'c:\clubedelphi\';
ShellExecute(handle,'explore',PChar(edArquivo.Text), '','',SW_SHOWMAXIMIZED);
Criando uma nova mensagem com o cliente de email padrão definindo para quem vai a mensagem (dwildt@dug-rs.org), definido cópia (dug-rs@dug-rs.org), assunto (Assunto do email) e corpo da mensagem (Texto da Mensagem):
edArquivo.Text := 'mailto:dwildt@dug-rs.org?cc=dug-rs@dug-rs.org&subject=Assunto do email&body=Texto da Mensagem';
ShellExecute(handle,'open',PChar(edArquivo.Text), '','',SW_SHOWNORMAL);
Abrindo um web site com o navegador padrão:
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.
Links Úteis
- TMainMenu: Criando menus em Delphi:
Aprenda a criar um menu principal para suas aplicações Delphi utilizando o TMainMenu. - Vue.js: Como criar sua primeira aplicação:
Neste curso você aprenderá a criar sua primeira aplicação com Vue.js, um dos principais frameworks JavaScript do mercado atualmente. - Navegação entre telas no Cordova:
Aprenda como é feita a navegação entre páginas em uma aplicação mobile desenvolvida com o Cordova.
Colabore com nosso Fórum ;)
- Try Except com Shell Execute:
Estou dentando fazer um tratamento com try except para que caso ele não consiga abrir o WORD o sistema informe uma mensagem de erro porem nao dá certo, o codigo esta assim: - ShellExecute não está funcionando:
Olá, sei que tenho que por alguma Unit na declaração para usar o ShellExecute, porém não me lembro qual... qual seria???? - ShellExecute(handle, 'CLOSE', PChar('C:\WINDOWS\system32\cmd.exe'), '', '', SW_SHOWNORMAL);:
Olá, Abri uma janela pelo cmd e preciso fechala como faço? Dei uma pesquisada na net mas sem sucesso. ShellExecute(handle, 'CLOSE', PChar('C:\WINDOWS\system32\cmd.exe'), '', '', SW_SHOWNORMAL);
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo