Ir para conteúdo

POWERED BY:

Arquivado

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

Neri Junior

Abrir .bat dentro de um panel

Recommended Posts

Olá, á mais de uma hora e meia estou pesquisando como abrir um arquivo .bat dentro de um panel, form ou qualquer elemento.

Tenho 3 arquivos .bat e gostaria de monstra-los dentro do meu form.

Qualquer ideia é bem vinda!

Abraços.

 

## Edit

Se tiver como eu rodar o .bat em background pegando apenas suas informações ja estaria de bom tamanho!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer que o conteúdo bat fique no Panel ou os resultados do panel fiquem no panel ?

Se for o segundo, olha aqui. Já precisei fazer isso só que em C++Builder.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo, no form tenho um panel e tenho o .bat externo chamado arquivo.bat, preciso OU abrir a janeça do dos no meu form, ou pegar as informações do .bat e transferilas para o panel.

Estou achando que em Delphi isso não será possível mas qualquer ajuda é bem vinda!

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está chamando o .BAT?

 

Parecido com isso ?

system('aaa.bat');

Tente assim

system('aaa.bat > C:\outbat.txt');
E veja o conteúdo do outbat.txt.

 

 

De uma olhada no link que ta no outro post, não te server ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que dese jeito não tem como.

 

Não sei se no Delphi tem o system, pra executa comandos do DOS, mas voce iria abrir o BAT e exportar todas as saídas para um arquivo TXT.

 

 

Tenta desse jeito:

{http://delphi.about.com/cs/adptips2001/a/bltip0201_2.htm}
procedure TForm1.Button1Click(Sender: TObject);
  begin {button 1 code}
	RunDosInMemo('C:\Arquivo.BAT',Memo1);
  end;

  procedure RunDosInMemo(DosApp:String;AMemo:TMemo);
  const
	 ReadBuffer = 2400;
  var
   Security : TSecurityAttributes;
   ReadPipe,WritePipe : THandle;
   start : TStartUpInfo;
   ProcessInfo : TProcessInformation;
   Buffer : Pchar;
   BytesRead : DWord;
   Apprunning : DWord;
  begin
   With Security do begin
	nlength := SizeOf(TSecurityAttributes);
	binherithandle := true;
	lpsecuritydescriptor := nil;
   end;
   if Createpipe (ReadPipe, WritePipe,
				  @Security, 0) then begin
	Buffer := AllocMem(ReadBuffer + 1);
	FillChar(Start,Sizeof(Start),#0);
	start.cb := SizeOf(start);
	start.hStdOutput := WritePipe;
	start.hStdInput := ReadPipe;
	start.dwFlags := STARTF_USESTDHANDLES +
						 STARTF_USESHOWWINDOW;
	start.wShowWindow := SW_HIDE;

	if CreateProcess(nil,
		   PChar(DosApp),
		   @Security,
		   @Security,
		   true,
		   NORMAL_PRIORITY_CLASS,
		   nil,
		   nil,
		   start,
		   ProcessInfo)
	then
	begin
	 repeat
	  Apprunning := WaitForSingleObject
				   (ProcessInfo.hProcess,100);
	  Application.ProcessMessages;
	 until (Apprunning <> WAIT_TIMEOUT);
	  Repeat
		BytesRead := 0;
		ReadFile(ReadPipe,Buffer[0],
ReadBuffer,BytesRead,nil);
		Buffer[BytesRead]:= #0;
		OemToAnsi(Buffer,Buffer);
		AMemo.Text := AMemo.text + String(Buffer);
	  until (BytesRead < ReadBuffer);
   end;
   FreeMem(Buffer);
   CloseHandle(ProcessInfo.hProcess);
   CloseHandle(ProcessInfo.hThread);
   CloseHandle(ReadPipe);
   CloseHandle(WritePipe);
   end;
  end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita, o programa que te mostrei pelo link é em VB(seguindo você mesmo =D), vou ter que fazer em VB oras!

Obrigado pela ajuda, mas se alguém ai conseguir em Delphi por favor não deixe de postar!

Abraços e obrigado pela ajuda.

 

Vou dar um olhada em Java tambem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que você precisa colocar o DOS na janela ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

De uma olhada aqui.

Diz como gravar o resultado do BAT em um arquivo texto. Deve ajudar.

 

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara. acho que isso vai t ajudar

 

cria um panel ai.. coloca um botão e cola esse código no evento OnClick do botão

	   windows.SetParent( FindWindow( nil, 'C:\WINDOWS\System32\cmd.exe' ), panel1.handle );

agora siga os passos

->rode o seu programa

->rode o seu ".bat"

->agora clique no botão na sua aplicação.

 

:D .. essa função vai colocar a janela do DOS dentro do panel que você colocou na sua aplicação, faça ai e veja o que acontece.. maximize, minimize, veja como a janela do DOS passa a residir dentro do seu panel... ela inclusive sai da barra de tarefas do windows

 

: D

 

espero que ajude cara.. qualquer coisa a mais : tonello.rafinha@gmail.com

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.