Detectar tecla presionada y enviarla a una ventana activa....

Iniciado por Zeroql, 24 Abril 2010, 20:08 PM

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

Zeroql

Buenas
Bueno la verdad es que tengo un portatil e machines con teclado ingles europeo, y resulta que no tiene la tecla <>, y de verdad que es necesaria, asi que decidi realizar una aplicacion para tomar otra tecla que tiene instalada pero no tiene acciones alguna. he hize esto:

Código (vbnet) [Seleccionar]

Const SW_NORMAL As Short = 1
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Integer, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Integer
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Hide()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim Key As String = Nothing
        Dim i As Integer
        For i = 0 To 255
            'Consultamos el valor de la tecla mediante el Api. 
            'Si se presionó devuelve -32767 y mostramos el valor de i 
            If GetAsyncKeyState(i) = -32767 Then
                Key = Chr(i)
            End If
        Next
        Try
            If asc(Key) = 255 Then
                My.Computer.Keyboard.SendKeys("<")
            ElseIf asc(Key) = 255 And My.Computer.Keyboard.ShiftKeyDown Then
                My.Computer.Keyboard.SendKeys(">")
            ElseIf asc(Key) = 255 And My.Computer.Keyboard.CtrlKeyDown Then
                My.Computer.Keyboard.SendKeys("<>")
            ElseIf asc(Key) = 255 And My.Computer.Keyboard.CtrlKeyDown And My.Computer.Keyboard.ShiftKeyDown Then
                My.Computer.Keyboard.SendKeys("</>")
            End If
        Catch ex As Exception
        End Try
    End Sub


Bueno resutlta que SI entra  a los if , pero No envia a la ventana activa el caracter.
Pregunto que hice mal??? o que me falta....
Esta hecho en .net 3.5
De ante mano muchas gracias

Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#