elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Enviar mensaje a la consola
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Enviar mensaje a la consola  (Leído 11,181 veces)
CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Enviar mensaje a la consola
« en: 5 Agosto 2010, 20:54 pm »

bueno tengo un problema usando FindWindow, ya que al parecer estoy cometiendo algun error que se me pasa por alto.

despues de leer un poco y escribir varias veces el codigo no logro enviar un mensaje a la consola (DOS windows), desde mi programa.

alguien me puede dar una mano por favor?


En línea

no me juzguen si no me conocen
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Enviar mensaje a la consola
« Respuesta #1 en: 6 Agosto 2010, 00:08 am »

Puedes replantear tu pregunta por favor? No entiendo qué tiene que ver FindWindow con la consola? O también postea esa parte del código a ver si vemos el error.

Un saludo!


En línea

CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: Enviar mensaje a la consola
« Respuesta #2 en: 6 Agosto 2010, 00:52 am »

estuve leyendo sobre como enviar un texto a una aplicacion externa a la mia, y encontre que se hace con FindWindow, FindWindowEx y SendMessage o PostMessage.

Tube la idea de enviar un mensaje a la consola de comandos de windows para ver si podia, pero al intentarlo no logre nada.

aca algunos de los codigos con los que intente (ya que no recuerdo todos):

Código
  1.        Dim hWnd As Long, tmp As Long
  2.        'forma 1:
  3.        For Each P As Process In Process.GetProcesses
  4.            If P.ProcessName = "Símbolo del sistema" Then
  5.                hWnd = P.MainWindowHandle
  6.            End If
  7.        Next
  8.        SendMessage(hWnd, WM_SETTEXT, 0, "texto")
  9.        'forma 2:
  10.        For Each P As Process In Process.GetProcesses
  11.            If P.ProcessName = "Símbolo del sistema" Then
  12.                tmp = P.MainWindowHandle
  13.            End If
  14.        Next
  15.        hWnd = GetWindow(tmp, 5)
  16.        SendMessage(hWnd, WM_SETTEXT, 0, "texto")
  17.        'forma 3:
  18.        hWnd = FindWindow(vbNullString, "Símbolo del sistema")
  19.        SendMessage(hWnd, WM_SETTEXT, 0, "texto")
  20.        'forma 4:
  21.        tmp = FindWindow(vbNullString, "Símbolo del sistema")
  22.        hWnd = GetWindow(tmp, 5)
  23.        SendMessage(hWnd, WM_SETTEXT, 0, "texto")
  24.  
En línea

no me juzguen si no me conocen
CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: Enviar mensaje a la consola
« Respuesta #3 en: 7 Agosto 2010, 00:34 am »

nadie sabe como puedo hacer esto?
En línea

no me juzguen si no me conocen
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Enviar mensaje a la consola
« Respuesta #4 en: 7 Agosto 2010, 06:26 am »

Hay una forma más fácil, no se si te funcione, es algo así:
Código
  1. [DllImport("user32.dll", EntryPoint = "FindWindow")]
  2. private static extern IntPtr FindWindow(string lp1, string lp2);
  3.  
  4. [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
  5. [return: MarshalAs(UnmanagedType.Bool)]
  6. private static extern bool SetForegroundWindow(IntPtr hWnd);
  7.  
  8. private void Test()
  9. {
  10.     //Una prueba con el notepad
  11.     IntPtr handle = FindWindow("Notepad", "Untitled - Notepad");
  12.     if (!handle.Equals(IntPtr.Zero))
  13.     {
  14.          if (SetForegroundWindow(handle))
  15.          {
  16.                SendKeys.Send("Hello World!");
  17.                SendKeys.Send("{ENTER}");
  18.           }            
  19.     }
  20. }
  21.  

Lo que hace es activar a esa ventana, y enviar texto como si fuese del teclado. Si no, la forma en que tu lo planteas es algo así:
Código
  1. private const int WM_SETTEXT = 0x000C;
  2. [DllImport("user32.dll")]
  3. private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  4.  
  5. [DllImport("User32.dll")]
  6. private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindows);
  7. [DllImport("User32.dll")]
  8. private static extern Int32 SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, StringBuilder lParam);
  9.  
  10. private void Test()
  11. {
  12.    IntPtr hWnd = FindWindow("Notepad", "Untitled - Notepad");
  13.    if (!hWnd.Equals(IntPtr.Zero))
  14.    {
  15.        IntPtr edithWnd = FindWindowEx(hWnd, IntPtr.Zero, "Edit", null);
  16.        if (!edithWnd.Equals(IntPtr.Zero))
  17.            SendMessage(edithWnd, WM_SETTEXT, IntPtr.Zero, new StringBuilder("Hello World!"));
  18.    }
  19. }
  20.  
En línea

CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: Enviar mensaje a la consola
« Respuesta #5 en: 7 Agosto 2010, 15:30 pm »

mira perdon que no sea tan bueno, pero no logro que el codigo funcione. lo pase a vb.net asi y no anda:

Código
  1. Public Sub test()
  2.    Dim hWnd As Long
  3.    hWnd = FindWindow("Notepad", "Untitled - Notepad")
  4.    If hWnd.Equals(IntPtr.Zero) <> 0 Then
  5.        Dim edithWnd As Long = FindWindowEx(hWnd, IntPtr.Zero, "Edit", vbNull)
  6.        If edithWnd.Equals(IntPtr.Zero) <> 0 Then SendMessage(edithWnd, WM_SETTEXT, IntPtr.Zero, "Hello World!")
  7.    End If
  8. End Sub
  9.  
En línea

no me juzguen si no me conocen
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Enviar mensaje a la consola
« Respuesta #6 en: 7 Agosto 2010, 16:46 pm »

Te da algún mensaje de error o algo?
En línea

CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: Enviar mensaje a la consola
« Respuesta #7 en: 7 Agosto 2010, 18:38 pm »

puse un try aver si podia tener mas info, pero no.
simplemente no envia el mensaje, compila perfecto :S
En línea

no me juzguen si no me conocen
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Enviar mensaje a la consola
« Respuesta #8 en: 7 Agosto 2010, 21:46 pm »

Con cualquier aplicación funciona bien, pero con la consola no, al parecer Windows no deja hacer eso.  Tiene los mensajes Protegidos, aún no le he encontrado solución :(
En línea

CH4ØZ

Desconectado Desconectado

Mensajes: 108



Ver Perfil
Re: Enviar mensaje a la consola
« Respuesta #9 en: 8 Agosto 2010, 01:05 am »

de ultima si no agregame al msn asi podriamos hablar mejor. mi idea era enviar un texto X a la consola, no importaba la forma, pero no logro hayar la solucion.

mi msn es the_chaoz92@hotmail.com
En línea

no me juzguen si no me conocen
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[c++]Code mensaje en consola vertical [Arreglado]
Programación C/C++
anonimo12121 2 6,436 Último mensaje 1 Marzo 2011, 16:33 pm
por anonimo12121
Enviar mensaje sockets
Programación C/C++
Stereo 0 2,473 Último mensaje 19 Noviembre 2011, 12:20 pm
por Stereo
Validar ingreso correcto con mensaje en consola...
.NET (C#, VB.NET, ASP)
DanielPy 3 3,877 Último mensaje 13 Mayo 2013, 19:37 pm
por DanielPy
Mensaje personalizado modo consola en c#
.NET (C#, VB.NET, ASP)
DanielPy 2 2,659 Último mensaje 18 Julio 2013, 17:58 pm
por DanielPy
¿Cómo puedo leer el mensaje de un email y mostrarlo en la consola?
.NET (C#, VB.NET, ASP)
Meta 1 4,525 Último mensaje 12 Junio 2019, 06:58 am
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines