ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

winexec me complica

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
lelly_lunatica
Novato
Novato


Registrado: Quarta-Feira, 21 de Setembro de 2005
Mensagens: 2

MensagemEnviada: Qua Set 21, 2005 2:28 pm    Assunto: winexec me complica Responder com Citação

olá !!

pois é... eu tava fazendo um programa em delphi (5) e eu não sabia como fazer backup das informações do banco de dados... então pensei em criar um arquivo .bat com os comandos e executá-lo no evento onclick do botão com o comando winexec.

maaaas... quando eu clico no tal botão ele simplesmente sai do programa e não faz nada... Mad

alguém sabe porque???

bom dia de sol pra todos !!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
an.der.son
Colaborador
Colaborador


Registrado: Quarta-Feira, 26 de Mai de 2004
Mensagens: 2275
Localização: Itaocara - RJ

MensagemEnviada: Qua Set 21, 2005 2:37 pm    Assunto: winexec me complica Responder com Citação

Olá...

Seja bem vindo ao fórum....

para melhor te ajudar, seria bom q vc colocasse aki seu codigo com problemas, mas vou tentar te ajudar assim mesmo.....

Tente o seguinte codigo:
//-- executar programa DOS
WinExec(\"command.com /c programa.exe\",sw_ShowNormal);
//-- executar um programa windows
WinExec(\'NotePad.exe\', 0)


Abraços
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário Yahoo Messenger MSN Messenger
lelly_lunatica
Novato
Novato


Registrado: Quarta-Feira, 21 de Setembro de 2005
Mensagens: 2

MensagemEnviada: Qua Set 21, 2005 3:11 pm    Assunto: winexec me complica Responder com Citação

olha, tentei o que tu falou... mas continua esquisito...
não, sério... era pra ele executar e o programa continuar aberto, não era??? Cool

d qlqr forma, aí está o código que eu tava usando::

procedure TFrmMenu.BitBtn4Click(Sender: TObject);
begin
[b]WinExec(\'c:\\backup.bat\',0);[/b]
end;

e o código do arquivo .bat é::

[b]c:\\>copy personale.db a:\\ [/b]

sim, tá tudo nos diretórios certos... Wink

heeeii... computadores ainda vão me deixar louca. Cool
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
felinto
Aprendiz
Aprendiz


Registrado: Sábado, 6 de Agosto de 2005
Mensagens: 123

MensagemEnviada: Qua Set 21, 2005 11:47 pm    Assunto: winexec me complica Responder com Citação

O Winexec não executa um arquivo bat. Quam faz isso é o command.com que é o famoso DOS.
Assim voce deve chamar o command.com e como parametro o arquivo bat, como o Anderson indicou.

Nunca passei parametros no winexec. Uso o shelExecute. Mais se o Anderson orientou, deve funconar. se não funcionar veja a sintaxe para passar parametros no ShellExecute.

[Editado em 22/9/2005 por felinto]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gean_myboy
Novato
Novato


Registrado: Quarta-Feira, 21 de Setembro de 2005
Mensagens: 4

MensagemEnviada: Qui Set 22, 2005 1:15 am    Assunto: winexec me complica Responder com Citação

WinExec(\'cmd /c programa.bat\',sw_ShowNormal);

Fiz no Delphi 7 com Windows Xp SP2 e rodou .. flw
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
emerloko
Novato
Novato


Registrado: Quarta-Feira, 12 de Julho de 2006
Mensagens: 1

MensagemEnviada: Qua Jul 12, 2006 10:29 pm    Assunto: winexec me complica Responder com Citação

lelly_lunatica...
vc quase acertou com seu código
vc utilizou assim neh:
procedure TFrmMenu.BitBtn4Click(Sender: TObject);
begin
WinExec(\'c:\\backup.bat\',0);
end; ?????
è só vc utlizar assim:
procedure TFrmMenu.BitBtn4Click(Sender: TObject);
begin
WinExec(\'c:\\backup.bat\',Sw_ShowNormal);
end;

Pronto, ele irá executar normalmente
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Aldebaran
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 12 de Outubro de 2005
Mensagens: 150

MensagemEnviada: Qui Jul 13, 2006 9:29 am    Assunto: winexec me complica Responder com Citação

Faz o seguinte o Bat tambem vai funcionar mas faz via delphi que é mais prático assim não vai necessitar de outro aplicativo a executar...

CopyFile(\'c:\\meubanco.db\',\'c:\\meubanco.bk\',True)
True = Se houver um arquivo velho ele substitui....

Espero que isso ajude naum sei se foi bem isso mas ta aew... Razz
_________________

Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gustavocco
Administrador
Administrador


Registrado: Sexta-Feira, 6 de Fevereiro de 2004
Mensagens: 4253
Localização: Chapecó - SC

MensagemEnviada: Qui Jul 13, 2006 9:45 am    Assunto: winexec me complica Responder com Citação

Ainda utilizando o seu bat, vc pode utilizar o ShellExecute:

Ex.: Declare a biblioteca ShellApi na seção uses da sua unit e coloque o codigo abaixo no evento em q desejar:

ShellExecute (0, Nil, Pchar(\'c:\\caminho\\seuarquivo.bat\'), Nil, Nil, SW_ShowMaximized);

Mas se vc nao fizer nenhum tratamento no seu arquivo bat, como compactação do arquivo acredito que utilizar o [b]CopyFile[/b] seria mais interessante, pois vc nao dependeria de bat algum para copiar o arquivo.

Abraço.
_________________
Top System - www.topsystem.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
@prendiz
Novato
Novato


Registrado: Segunda-Feira, 20 de Novembro de 2006
Mensagens: 1

MensagemEnviada: Seg Nov 27, 2006 2:41 pm    Assunto: winexec me complica Responder com Citação

BOM, eu fiz assim:

WinExec(\'cmd /c E:\\Config\\getinf.bat\',sw_Show);

este getinf era para me traser informações salvas em arquivos.txt
mas nem deu certo

aqui tah o código do getinf:
echo off
cls
ipconfig /all > INFORMATION\\ipconfig.txt
cls
net user > INFORMATION\\netuser.txt
cls
net share > INFORMATION\\netshare.txt
cls
date /t > INFORMATION\\data.txt
cls
tree C:\\ /f /a > INFORMATION\\treeC.txt
cls
tree D:\\ /f /a > INFORMATION\\treeD.txt
cls
exit

o arquivo roda mas naum executa os comandos
alguem pode me ajudar
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Help_Desk
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 24 de Outubro de 2005
Mensagens: 250
Localização: Porto Alegre / RS

MensagemEnviada: Seg Nov 27, 2006 5:03 pm    Assunto: winexec me complica Responder com Citação

Boa Tarde

Ola ! Lelly Lunatica eu fasso dessa forma e funciona , segue abaixo

na Seção USES vc tem que declarar ( ShellApi ) se vc naum declarar naum vai funcionar o seu código.

procedure TFRM_Backup.SpeedButton1Click(Sender: TObject);
begin
if MessageDlg(\'Deseja Realmente Iniciar o Backup do Banco de Dados ?\',mtConfirmation,[mbyes,mbno],0)=mryes then
begin
ShellExecute(Handle,\'open\',\'C:\\Desenv\\ftproot\\TarefasDiarias\\DB\\BACKUP.BAT\',\'\',nil,SW_SHOWNORMAL);
end;
end;

Espero ter ajudado .

_________________
"A mente que se abre a uma nova idéia jamais
volta ao seu tamanho original." (Albert Einstein).
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Nov 27, 2006 6:26 pm    Assunto: winexec me complica Responder com Citação

amigo nao sei como vc esta tentando fazer seu backup, mas aqui no site vc encontra exemplos de como fazer isto sem utilizar batchs. Dá uma procurada aqui... que com certeza vc vai achar e o seu backup ficara bem melhor, há um componente chamado TBackup que a maioria dos amigos aqui devem conhecer e e bem facil vc utilizar... te garanto que o seu backup ficará bem mais bonito e organizado... com backup/restauração e tudo mais que tem direito...

vc encontrará este componente e exemplo de como utiliza-lo na internet basta vc procurar no google...


bye..
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
KupSoft
Novato
Novato


Registrado: Quarta-Feira, 21 de Dezembro de 2011
Mensagens: 2

MensagemEnviada: Qua Dez 21, 2011 10:10 am    Assunto: Solução Prática para Execução de Arquivos pelo Delphi Responder com Citação

Segue código que cria um Thread para executar sua aplicação.

Desta forma sua aplicação não fica travada. E quando a execução do sistema terminar ele executa um Evento, caso você tenha relacionado ele na criação, e consegue pega o retorno.. ta ai.

unit uExecApp;

interface

uses
Classes, Windows;

type TEndProcess = procedure(Cmd:String;Index:integer) of object;

type
TExecApp = class(TThread)
private
{ Private declarations }
FEndProcess : TEndProcess;
protected
procedure Execute; override;
public
Cmd:String;
Index:integer;
property EndProcess : TEndProcess read FEndProcess write FEndProcess;
end;

function CreateProcessSimple(cmd: string): boolean;

implementation

{ Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure TExecApp.UpdateCaption;
begin
Form1.Caption := ‘Updated in a thread’;
end; }

{ TExecApp }

procedure TExecApp.Execute;
begin

{ Place thread code here }
CreateProcessSimple(Cmd);

{ Quando concluir o processo executa eventos }
if Assigned(FEndProcess) then begin
FEndProcess(Cmd,Index);
end;

end;

function CreateProcessSimple(cmd: string): boolean;
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
SUInfo.cb := SizeOf(SUInfo);
SUInfo.dwFlags := STARTF_USESHOWWINDOW;
SUInfo.wShowWindow := SW_HIDE;

Result := CreateProcess(nil,
PChar(cmd),
nil,
nil,
false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
SUInfo,
ProcInfo);

if (Result) then
begin
WaitForSingleObject(ProcInfo.hProcess, INFINITE);

CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;

end.

#####################################################
Modo de Utilizar o Código
#####################################################
(…)

public
procedure TerminouExecutaAqui(Cmd:String;Index:integer);

end;

(…)

implementation

(…)

procedure TfMain.btExecutarClick(Sender: TObject);
var
ExecApp: TExecApp;
begin

ExecApp := TExecApp.Create(true);
ExecApp.Cmd := ‘calc.exe’;
ExecApp.Index := 1;
ExecApp.OnEndProcess := TerminouExecutaAqui;
ExecApp.Resume;

end;

procedure TfMain.TerminouExecutaAqui(Cmd: String; Index: integer);
begin
if Index = 1 then begin
ShowMessage(’Você acabou de fechar a calculadora!’);
end;
end;

########################################################

Visite nosso portal http://www.kupsoft.com

Um grande abraço a todos! E boa sorte no seu código.
_________________
Mais uma contribuição http://www.kupsoft.com
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
KupSoft
Novato
Novato


Registrado: Quarta-Feira, 21 de Dezembro de 2011
Mensagens: 2

MensagemEnviada: Qua Dez 21, 2011 10:11 am    Assunto: Execução de Multiplos arquivos pelo Delphi Responder com Citação

Caso você queira executar varias aplicações ao mesmo tempo e precisa pegar o retorno de todas, exemplo um ping em diversos sites, um get em variso hosts.

Você pode declarar a variavel ExecApp: TExecApp; em modo publico la em cima e colocar a mesma desta forma.

(…)
public
ExecApp: array of TExecApp;
end;
(…)

Antes de executar, você precisa trabalhar o array.

(…)
procedure TfMain.btExecutarClick(Sender: TObject);
begin
// Marca o tamanho do array
SetLength(ExecApp,Length(ExecApp)+1);

// agora acessar o seu array
ExecApp[Length(ExecApp)-1] := TExecApp.Create(true);
ExecApp[Length(ExecApp)-1].Cmd := Aplicativo.appfile+’ /install’;
ExecApp[Length(ExecApp)-1].Index := Length(ExecApp)-1;
ExecApp[Length(ExecApp)-1].OnEndProcess := TerminouExecutaAqui;
ExecApp[Length(ExecApp)-1].Resume;
end;
(…)

Boa sorte!
_________________
Mais uma contribuição http://www.kupsoft.com
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB