Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Como resolver esses problemas?

Recommended Posts

Pessoal, to precisando de uma força:

 

Criei um form e puz nele 2 radio buttons.

1 - Instalar office 2002

2 - Instalar norton 2002

 

No evento onclik do primeiro radio button eu coloquei(Porque só iformando o path completo funciona)

procedure TForm1.RadioButton2Click(Sender: TObject);beginWinExec('D:\Office Xp Com Front Pager/INSTALAR.EXE',0);close;end;

e No evento onclik do segundo radio button eu coloquei(Porque só iformando o path completo funciona)

procedure TForm1.RadioButton1Click(Sender: TObject);beginWinExec('D:\Norton 2002/SETUP.EXE',0);//WinExec('Norton 2002/SETUP.EXE',0);//WinExec('D:\Norton 2002/NCDSTART.EXE',0);close;end;

Como fazer para nao por o path completo?

 

Pergunto isso, pois caso a pessoa tenha como driver "D:" um outro hd aí lascou tudo.

 

Outro detalhe é que se o onclik do Norto setar para o instalador:"SETUP.EXE", aí funciona ok, mas se for setado para uma tela de escolha das opções do Norton:"NCDSTART.EXE", aí da a musiquinha de abertura mas a tela nao vem. Só se clikar diretamente sobre ela.

 

Como resolver esses problemas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho uma procedure aqui pra você chamar um aplicativo e esperar, quando você fechar o aplicativo que foi chamado ele volta pro seu programa

 

//Inclua na seção uses: Windowsfunction ExecAndWait(const FileName, Params: string;  const WindowState: Word): boolean;var  SUInfo: TStartupInfo;  ProcInfo: TProcessInformation;  CmdLine: string;begin  { Coloca o nome do arquivo entre aspas. Isto é necessário devido aos espaços contidos em nomes longos }  CmdLine := '"' + Filename + '"' + Params;  FillChar(SUInfo, SizeOf(SUInfo), #0);  with SUInfo do begin  cb := SizeOf(SUInfo);  dwFlags := STARTF_USESHOWWINDOW;  wShowWindow := WindowState;  end;  Result := CreateProcess(nil, PChar(CmdLine), nil, nil, false,  CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,  PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);  { Aguarda até ser finalizado }  if Result then begin  WaitForSingleObject(ProcInfo.hProcess, INFINITE);  { Libera os Handles }  CloseHandle(ProcInfo.hProcess);  CloseHandle(ProcInfo.hThread);  end;end;- Exemplo de uso:ExecAndWait('c:\windows\notepad.exe', '', SW_SHOW);

e tem outra que somente chama

 

uses Shellapi procedure ExecutePrograma(Nome, Parametros: String);Var Comando: Array[0..1024] of Char; Parms: Array[0..1024] of Char;begin  StrPCopy (Comando, Nome);  StrPCopy (Parms, Parametros);  ShellExecute (0, Nil, Comando, Parms, Nil, SW_ShowMaximized);end; Para rodar ela: ExecutePrograma('WinWord.Exe, ''); ou se quiser rodar um documento ou arquivo: ExecutePrograma ('C:\MSOffice\Excel\Excel.Exe', 'Contas.Xls');

O path do programa você vai ter que informar inteiro mesmo, mas tem um função que pega o diretorio que está sua aplicação:

 

ExtractFilePath( Application.ExeName )

espero que estas informações o ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, to precisando de uma força:Criei um form e puz nele 2 radio buttons.1 - Instalar office 20022 - Instalar norton 2002No evento onclik do primeiro radio button eu coloquei(Porque só iformando o path completo funciona)

procedure TForm1.RadioButton2Click(Sender: TObject);beginWinExec('D:\Office Xp Com Front Pager/INSTALAR.EXE',0);close;end;
e No evento onclik do segundo radio button eu coloquei(Porque só iformando o path completo funciona)
procedure TForm1.RadioButton1Click(Sender: TObject);beginWinExec('D:\Norton 2002/SETUP.EXE',0);//WinExec('Norton 2002/SETUP.EXE',0);//WinExec('D:\Norton 2002/NCDSTART.EXE',0);close;end;
Como fazer para nao por o path completo?Pergunto isso, pois caso a pessoa tenha como driver "D:" um outro hd aí lascou tudo.Outro detalhe é que se o onclik do Norto setar para o instalador:"SETUP.EXE", aí funciona ok, mas se for setado para uma tela de escolha das opções do Norton:"NCDSTART.EXE", aí da a musiquinha de abertura mas a tela nao vem. Só se clikar diretamente sobre ela.Como resolver esses problemas?
humm.. faz assim oh.. WinExec( ExtractFilePath( Application.ExeName ) + 'SETUP.EXE', 0 ); :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

num sei se os códigos postados pelos colegas ajudaram mas vou dar minha contribuição:---Se seu programa (o que chama o instaler do office ou do norton) será o arquvo chamado no autorun.inf de um cd que você gravar, é só colocar o diretório sem a letra da unidade---WinExec('\Norton 2002/SETUP.EXE',0);---como funciona:bom seu arquivo está eum um diretório (c:\ ou d:\ e:\, não fará diferença) como você não passou a localização completa do arquivo a ser chamado, ele procurará a partir do diretório que ele está contidoexemplose você tem uma pasta com o nome 'teste' dento da pasta 'meus documentos', nesta pasta 'teste' tem um arquivo com o nome 'oi.exe' e dentro da pasta 'meus documentos' tem um arquivo com o nome 'principal.exe'; coloque em um botão do' principal.exe' a linha: winexec('\teste\oi.exe',1); que ele vai executar o arquivo 'oi.exe', se você quiser colocar o arquivo 'principal.exe' em outro diretório como 'c:\', a pasta 'teste' deve estar no diretório 'c:\' para funcionar.---se não especeificar a unidade a procurar, o seu programa vai procurar a partir do diretório que ele está.se ainda estiver com dúvidas, use bdexterholland@gmail.comajudarei com muito prazer^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.