Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: darnali en 7 Abril 2010, 15:22 pm



Título: Interrupcion de teclado
Publicado por: darnali en 7 Abril 2010, 15:22 pm
Hola buenas!

Me gustaria a ver si alguien me puede explicar como funcionan las interrupciones en Visual Studio 2008 programando con Framework 2.0, no se como van i si alguien me echa un cable, le estaria muy agradecido!

Saludos!


Título: Re: Interrupcion de teclado
Publicado por: Zzombi en 8 Abril 2010, 03:20 am
quieres bloquear el teclado? o bloquear ciertas teclas

explicate más


Título: Re: Interrupcion de teclado
Publicado por: bizco en 8 Abril 2010, 03:21 am
no se usan interrupciones a dia de hoy.


Título: Re: Interrupcion de teclado
Publicado por: darnali en 8 Abril 2010, 09:45 am
quiero escribir en la interrupcion de teclado, es decir, poder escribir por el puerto de teclado sin el teclado, no se si me explico...


Título: Re: Interrupcion de teclado
Publicado por: Zzombi en 9 Abril 2010, 03:54 am
y que tal simular pulsaciones de teclas?
con keybd_event


Título: Re: Interrupcion de teclado
Publicado por: darnali en 9 Abril 2010, 09:09 am
ya lo probé y no me sirve, ya que en el inicio de sesion de windows no me envia las teclas "pulsadas" con el keybd_event al foco del password por ejemplo, eso es lo que quiero hacer en definitiva, no hay nada mas a parte del sendkeys?

Saludos!


Título: Re: Interrupcion de teclado
Publicado por: [D4N93R] en 9 Abril 2010, 20:39 pm
SendKeys?


Título: Re: Interrupcion de teclado
Publicado por: Keyen Night en 10 Abril 2010, 00:06 am
El API SendMessage tambien sirve para enviar teclas pero a un handle determinado...

Mira este ejemplo en C#
Código
  1.        [DllImport("user32.dll")]
  2.        public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
  3.  
  4.            public const int WM_KEYDOWN = 0x0100;
  5.            public const int WM_KEYUP = 0x0101;
  6.            public const int WM_CHAR = 0x0102;
  7.  
  8.        public static void SendString(IntPtr mHandle, string s)
  9.        {
  10.            foreach (var c in s)
  11.                SendKey(mHandle, Convert.ToInt32(c));
  12.            Thread.Sleep(10);
  13.        }
  14.  
  15.        public static void SendKey(IntPtr mHandle, Int32 key)
  16.        {
  17.            SendMessage(mHandle, WM_KEYDOWN, (int)key, 0);
  18.            SendMessage(mHandle, WM_CHAR, (int)key, 0);
  19.            SendMessage(mHandle, WM_KEYUP, (int)key, 0);
  20.        }


Título: Re: Interrupcion de teclado
Publicado por: darnali en 12 Abril 2010, 11:07 am
ok, vamos a ver, y eso como se llamaria luego, por ejemplo si quiero enviar "Hola" al "textbox" del password de windows??

es mas.... tengo problemas al traducir esto a VB.NET, podrias echarme un cable en esto?

Gracias de antemano


Título: Re: Interrupcion de teclado
Publicado por: Keyen Night en 12 Abril 2010, 16:35 pm
Primero debes de descargar el WinID para saber si el TextBox es Child o Parent y saber cual es su Class y el Class de su Parent si es Child, esto para así saber si debes usar FindWindow o FindWindowEx. Una vez obtenido el Handle el codigo anterior es más facil de usar en Vb.Net:

Código
  1.    Public Const _
  2.    WM_KEYDOWN As Integer = &H100, _
  3.    WM_KEYUP As Integer = &H101, _
  4.    WM_CHAR As Integer = &H102
  5.  
  6.    Public Sub SendString(ByVal mHandle As IntPtr, ByVal s As String)
  7.  
  8.        For Each c As String In s
  9.            SendKey(mHandle, System.Text.Encoding.Default.GetBytes(c).First)
  10.            Threading.Thread.Sleep(10)
  11.        Next
  12.  
  13.    End Sub
  14.  
  15.    Public Sub SendKey(ByVal mHandle As IntPtr, ByVal key As Keys)
  16.        SendMessage(mHandle, WM_KEYDOWN, key, IntPtr.Zero)
  17.        SendMessage(mHandle, WM_CHAR, key, IntPtr.Zero)
  18.        SendMessage(mHandle, WM_KEYUP, key, IntPtr.Zero)
  19.    End Sub

Y prueba el codigo así:

Debes importar SendMessage, FindWindow y FindWindowEx ( las consigues en pinvoke.net )

Abre un Bloc de Notas y dejalo vacio, en tu Sub Load agrega lo siguiente:

Código
  1.        Dim Notepad As IntPtr = FindWindowEx(FindWindow("Notepad", Nothing), 0, "Edit", Nothing)
  2.  
  3.        SendString(Notepad, "Enviando String con SendMessage")

Funciona perfecto ^^


Título: Re: Interrupcion de teclado
Publicado por: darnali en 12 Abril 2010, 17:33 pm
Es correcto, esto ya lo conseguí con el comando sendkeys, pero no es eso exactamente lo que quiero, lo que quiero es poder escribir de forma generica, en cualquier lugar donde se me antoje, quiero decir, si el foco esta en el buscador de google que me escriba alli, si el foco esta en el word que me escriba alli, y eso tambien lo se hacer, quiero decir lo he echo ya, lo que realmente no puedo hacer es escribir en el "textbox" del password de accesso a windows o cuando el pc està bloqueado, y para desbloquejar-lo tienes que poner el password.

He construido un servicio que en teoria funciona, de echo funciona al 100% en entorno escritorio de windows, quiero decir en cualquier formulario de windows, pero deja de funcionar cuando tienes que poner el password de windows, ahí esta mi problema, que no puedo escribir en el "form" (entre comillas) de autenticacion de windows

El servicio lee de un puerto serie y escribe con sendkeys donde este el foco del raton, de echo el hecho de leer del pueto serie no supone ningun problema, ya que depurando (escribiendo en archivos a cada linia) veo que se me "detiene" justo antes del comando sendkeys, despues de este comando no me escribe mas en el fichero de "debbug",  por lo tanto deduzco que sendkeys, no funciona en el foco de la autenticacion de windows como lo hace (correctament) en cualquier otro foco del escritorio (applicacion) con la session desbloqueada

Espero haberme explicado, le he dado mil vueltas, y espero poder encontrar las respuesta en las api's de windows, pero tengo que saber como hacer-lo, porque todo lo que he probado no me funciona

Muchas gracias por responder, y perder vuestro valioso tiempo en un problema de alguien que ni siquiera conoceis... os estoy muy agradecido!


Título: Re: Interrupcion de teclado
Publicado por: [D4N93R] en 13 Abril 2010, 17:27 pm
El servicio esta corriendo con qué usuario?


Título: Re: Interrupcion de teclado
Publicado por: darnali en 13 Abril 2010, 17:51 pm
local system (puede interactuar con el escritorio) aunque lo he probado de las manera interactuando y sin interactuar