RECURSAO

XAVIER 26/08/2012 17:10:11
#408673
Ola pessoal!
Fiquei fora uns 8 dias mais voltei para aprender mais com vocês.
Minha pergunta é a seguinte: é possível interagir uma console.exe criado do vb6 com uma textbox dentro de um form ?
Alguém teria uma idéia ou um exemplo? Qualquer sugestão será bem vinda.
Desde já agradeço pessoal.
JABA 26/08/2012 19:39:18
#408680
Xavier, o que isso tem haver com recursão?

vlw
XAVIER 27/08/2012 08:46:56
#408700
JABA, você sabe que recursão é uma função que chama ela mesma quantas vezes você determinar. Pois, é... numa console eu consigo fazer isso fácil, fácil. Determino um conjunto de funções recursivas.
Já no VB6, até agora não encontrei uma forma de fazer o mesmo em uma textbox ou até mesmo por evento keypress. Talvez você saiba como eu possa após gerar uma console.exe, chamá-la através de um textbox em um form. A idéia é que as chamadas venham para um label e os comandos e respostas para um textbox. Não sei se fui bem claro.
Agradeço a sua atenção.
JABA 27/08/2012 17:59:50
#408714
Xavier, recursão é exatamente o que você descreveu, porém, o que você está querendo ainda está muito obscuro. Não dá para saber o que você quer realmente.

Criando um metodo recursivo que passe o textbox e o label como parametro não resolve o seu caso?

vlw

XAVIER 27/08/2012 18:42:44
#408715
Vamos lá !!!
Vou tentar ser mais claro.
Preciso saber como capturar a saída [Ô]stdout[Ô] de um aplicativo console.exe em um textbox, que eu criei no vb6.
Exemplificando: Imagine a console prompt de comandos do [Ô]DOS[Ô], então eu preciso capturar a saída em um campo text no vb6.
Veja bem, eu já tenho um console.exe, desenvolvido com um certo número e comandos já pré definidos por mim.
Preciso acessar esta console.exe e chamar os comandos [Ô]recursivos[Ô] através de um textbox.
Bom...é isso.
VELDRAME 28/08/2012 11:09:05
#408760
Boa tarde Xavier.
Pelo o que eu entendi você vai passar um parâmetro para o seu console, e esse parâmetro vira do campo Text.

Se for isso mesmo segue:
No evento Form_load do conole:
[ô]Testa se já existe uma instancia aberta
If App.PrevInstance Then
End
End If
[ô]-------------------------------------------------------------------------
[ô]Verifica se foi passado algum argumento
[ô]Caso não, ele abre normalmente
If Command <> [Ô][Ô] Then
If Command = [Ô]xxxxxxx[Ô] Then
MsgBox [Ô]yyyyyyy[Ô]
ElseIf Command = [Ô]yyyyyyy[Ô] Then
MsgBox [Ô]yyyyyyy[Ô]
ElseIf Command = [Ô]zzzzzzzz[Ô] Then
MsgBox [Ô]zzzzzzzz[Ô]
End IF
End IF

[ô]No aplicativo que for chamar o Console.exe usar:
Call Shell ([Ô]Caminho do Console.exe[Ô] - parametro, tipo de abertura)

Exemplo:
Call Shell ([Ô]CONSOLE.EXE - busca [Ô], vbMaximizedFocus)

XAVIER 28/08/2012 16:23:21
#408784
Obrigado Eric Beltrame pela ajuda!

Companheiro, o seu código vai chamar a console e abrí-la na tela. Preciso que ela rode em background, ou seja sem aparecer. Quanto a isso, deve haver um parâmetro do tipo [Ô]hide[Ô]. Vamos por parte.
Como faço para invocar os comandos da console.exe através de um campo text e retornar para este mesmo campo text as opções a serem dadas ?
Exemplo:
Não sei se você conhece a prompt do AutoCad. Ele é uma console embutida em um form, rodando em background. Os comandos são desenvolvido em lisp ou seja [Ô]c[Ô] interpretado. Não é o meu caso. Já larguei lisp à dez anos. Faço tudo e um tanto a mais com o bom e velho vb6.
Então é isso aí !
KERPLUNK 28/08/2012 16:27:31
#408785
Resposta escolhida
Já pensou em gravar o output para um arquivo texto e depois ler? Seria muito mais fácil:
Shell [Ô]C:\pasta\programa.exe >arquivo.txt[Ô]
Open [Ô]C:\pasta\arquivo.txt[Ô] for input as #1
....
XAVIER 28/08/2012 16:52:51
#408788
Na verdade KERPLUNK, já pensei nesta solução sim. O que me chamou muita atenção foi um código que baixei e estou estudando. Vou passar para vocês darem uma olhadinha. Se vocês puderem dar uma clareada a mais, será muito bem vindo. Ele simula um interpretador vb. Aí dispensaria a console e faria de um campo text um pequeno interpretador e daí a facilidade de tê-lo no form.

[ô]módulo:
Public Declare Function EbExecuteLine Lib [Ô]vba6.dll[Ô] (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long

[ô]form:
Private Sub Command1_Click()

comando = Text1
comando = Replace(comando, Chr(13) + Chr(10), [Ô]:[Ô])
executeline = EbExecuteLine(StrPtr(comando), 0&, 0&, Abs(fCheckOnly)) = 0
If executeline = False Then MsgBox [Ô]Erro na compilação[Ô]

End Sub

Pergunta: Existem outras formas de usar esta sintaxe de tal maneira que retorne a resposta parauma textbox?
Abs(fCheckOnly)...outras ?????


Digite estes dados na textbox multiline = true
a = 10
b = 20
c = a + b
msgbox [Ô]A soma de A e B é igual a [Ô] & c,,[Ô]Função[Ô]

Desde já agradeço a boa vontade e paciência de todos.
KERPLUNK 28/08/2012 18:20:32
#408792
Então o que você quer fazer é um interpretador de comandos, certo?
XAVIER 28/08/2012 18:58:05
#408796
Certo
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas