[Ayuda] CMD Echo

Iniciado por Miseryk, 10 Septiembre 2011, 23:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Miseryk

Hola, estoy queriendo enviar texto a una ventana MDOS/CMD/command prompt abierta, el texto que deseo enviar no es tipo sendkey o sendmessage o postmessage, sinó como un "echo hola", que se imprime un enter, luego el hola luego otro enter y aparece el directorio en el que estaba para poder seguir escribiendo comandos, con el IDA encontré _cmd_printf, pero la verdad que no quiero llegar al punto de injectar dlls para enviar un echo, lo pensé hacer en ASM inline pero me cuesta mucho, mientras tanto me gustaría alguna opinión de ustedes, desde ya muchas gracias.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

BlackZeroX

usa la cañeria de comunicacion entre procesos... PIPES

Dulces Lunas!¡.
The Dark Shadow is my passion.

raul338

Querés enviar instrucciones a una ventana de consola o querés llamar tu aplicación desde consola y que devuelva algún texto?

Sendkeys funciona perfectamente utilizándolo con FindWindow + SetForegroundWindow + DoEvents :P

Código (vb) [Seleccionar]


Private Declare Function FindWindowA Lib "user32" (ByVal sClassName As String, ByVal sWindowTitle As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal lhWnd As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Const sCommand As String = "Echo ""Hola"""

Private Sub Form_Load()
   Dim h As Long
   h = FindWindowA("ConsoleWindowClass", vbNullString)
   
   If h = 0 Then Exit Sub
   Call SetForegroundWindow(h)
   DoEvents
   Dim i As Long
   For i = 1 To Len(sCommand)
       If GetForegroundWindow() <> h Then Call SetForegroundWindow(h)
       DoEvents
       Call SendKeys(Mid$(sCommand, i, 1))
       DoEvents
   Next
   If GetForegroundWindow() <> h Then Call SetForegroundWindow(h)
   Call SendKeys("+{ENTER}")
   DoEvents
   
   Call Unload(Me)
End Sub

Miseryk

En realidad no quiero que se envíe texto, solo que haga la función echo y que yo no vea texto escribiéndose, ej, hice un programa para consola y quiero que cuando lo ejecute me diga:
ej: tengo el cmd abierto:

y escribo

c:\>cleancookies

y que al hacer enter me diga:

Se ejecutó exitosamente.

y luego que parezca:
c:\> (o en el dir que estaba)

Resultado completo:


c:\>
c:\>cleancookies
Se ejecutó exitosamente.

c:\>
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

raul338

Tu quieres hacer una aplicacion de consola, y no estoy seguro de que se pueda :P
A menos que quieras simular una consola para ejecutar otras aplicaciones :-\

Miseryk

#5
Ya hice una aplicación para la consola, tuve que modificar los headers, pero lo que quería hacer era que se ejecutara el comando echo o algo similar para mostrar un texto de respuesta desde una aplicación externa.

PD: lo que expliqué arriba es la aplicación a la cual hice la modificacion de headers, pero quiero obtener el mismo resultado desde una aplicación externa teniendo la ventana cmd abierta. (Y) : )
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!