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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda para ejecute un tipo comando
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para ejecute un tipo comando  (Leído 3,062 veces)
pablomillon

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ayuda para ejecute un tipo comando
« en: 16 Marzo 2015, 21:29 pm »

Bueno lo que yo quiero esque al escribir una palabra me haga una acción por ejemplo "escribo /Speed y que el form me detecte la palabra que salga en el label1 cambie de nombre"
intete
If SendKeys.Send("/Speed") And SendKeys.Send("{enter}") Then
            label1.text = "Ejecutado correctamente"
        End If

Pero me marca error ayuda!


En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Ayuda para ejecute un tipo comando
« Respuesta #1 en: 16 Marzo 2015, 22:33 pm »

1) ¿por qué no ponés un textbox que al presionar "enter" realice la acción que quieras?
2) sendleys lee o toma o envía como quieras decirlo cada una de las teclas presionadas de forma individual.
3) por lo tanto por un lado deberías comparar que la cadena "speed" esté escrita y por otro que al presionar "Enter" haga lo que quieras
4)por ejemplo: en la función del textbox Private Sub Text1_KeyPress(KeyAscii As Integer)
si  KeyAscii = 13 entonces
si textbox.texto = "speed" entonces
label.texto = "correcto"
final si
final si
final función del textbox
5) lo que me lleva a usar solo Keyascii en lugar de sendkeys
6) por supuesto que puedo estar totalmente errado!


En línea

pablomillon

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda para ejecute un tipo comando
« Respuesta #2 en: 16 Marzo 2015, 23:04 pm »

Pero yo quiero escribir la Palabra afuera del form ejemplo si Aqui escribiera "Speed" que me marque la accion en el form
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Ayuda para ejecute un tipo comando
« Respuesta #3 en: 17 Marzo 2015, 00:54 am »

pues en ese caso podrías usar la api GetAsyncKeyState para detectar las teclas pulsadas.
En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Ayuda para ejecute un tipo comando
« Respuesta #4 en: 17 Marzo 2015, 16:52 pm »

Hola
Podría ser algo así  :silbar:

--Se necesita---
-1 control Timer
-1 Label
-1 Textbox


Código
  1. Public Class Form1
  2.    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Int32) As Int32
  3.    Dim RegistrerKeys As String 'Aquí se registran las teclas pulsadas
  4.    Dim Comando As String
  5.    Dim cont As Long
  6.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  7.        TextBox1.Visible = False
  8.        Timer1.Enabled = True
  9.        'Ojo con esto, cuanto menor sea el valor'interval' más
  10.        'rápido hay que teclear para detectar la palabra pulsada
  11.        Timer1.Interval = 70
  12.        Comando = "Speed"
  13.    End Sub
  14.  
  15.  
  16.    Public Function IsCommand(ByVal Command As String, ByVal Cadena As String, ByVal objText As TextBox) As Boolean
  17.        Dim C As Integer
  18.        objText.Text = Cadena
  19.        C = InStr(1, Cadena, Command, 1) 'posición en el que se encuentra el elemento buscado
  20.        On Error GoTo NoPalabra
  21.        objText.SelectionStart = C - 1
  22.        objText.SelectionLength = Len(Command)
  23.        If Len(Command) > 0 Then IsCommand = True
  24. NoPalabra:
  25.  
  26.    End Function
  27.  
  28.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  29.        Dim msg As Boolean, S As Long, i As Long
  30.        S = 0
  31.        'Detecta las pulsaciones de teclas y las introduce en Registrerkeys
  32.        For i = 65 To 90 '65 a 90 representan letras de la A a Z
  33.            S = GetKeyState(i) 'Obtiene un valor negativo si se ha pulsado una tecla entre 65 y 90 (de A a Z)
  34.            If S < 0 Then
  35.                RegistrerKeys = RegistrerKeys & Chr(i) 'Introduce las letras pulsadas en Registrerkeys
  36.            End If
  37.        Next i
  38.       'Iscommand comprueba si se ha pulsado "speed"
  39.        msg = IsCommand(Comando, RegistrerKeys, TextBox1) 'Busca una palabra en un grupo de  teclas pulsadas
  40.        If msg = True Then
  41.            msg = False
  42.            RegistrerKeys = ""
  43.            TextBox1.Text = ""
  44.            MsgBox("Palabra pulsada: " & Comando)
  45.            Label1.Text = Comando
  46.        End If
  47.    End Sub
  48.  
  49. End Class


El código no es muy eficiente. Detectará la pulsación de la palabra dependiendo de la velocidad en que pulses. Yo he puesto   Timer1.Interval = 70, así que hay que pulsar las teclas muy brevemente. Por ejemplo si mantengo una tecla demasiado tiempo, por ejemplo la "P", el programa detecta "SPPPPEED", y por lo tanto no la da por válida.
« Última modificación: 18 Marzo 2015, 17:15 pm por okik » En línea

pablomillon

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda para ejecute un tipo comando
« Respuesta #5 en: 18 Marzo 2015, 02:58 am »

Gracias amigos me sirvieron los dos consejos gracias.
En línea

pablomillon

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda para ejecute un tipo comando
« Respuesta #6 en: 18 Marzo 2015, 03:58 am »

Una pregunta quiero agregar otro comando ya pero solo me lee el primer comando los demas no me ejecuta miren como esta
Código:
Public Class Form1
    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Int32) As Int32
    Dim RegistrerKeys As String 'Aquí se registran las teclas pulsadas
    Dim Comando As String
    Dim Comando2 As String
    Dim Comando3 As String
    Dim Comando4 As String
    Dim cont As Long
   
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim msg As Boolean, S As Long, i As Long
        S = 0
        'Detecta las pulsaciones de teclas y las introduce en Registrerkeys
        For i = 65 To 90 '65 a 90 representan letras de la A a Z
            S = GetKeyState(i) 'Obtiene un valor negativo si se ha pulsado una tecla entre 60 y 90 (de A a Z)
            If S < 0 Then
                RegistrerKeys = RegistrerKeys & Chr(i) 'Introduce las letras pulsadas en Registrerkeys
            End If
        Next i
        'Iscommand comprueba si se ha pulsado "speed"
        msg = IsCommand(Comando, RegistrerKeys, TextBox1) 'Busca una palabra en un grupo de  teclas pulsadas
        If msg = True Then
            msg = False
            RegistrerKeys = False
            TextBox1.Text = ""
            MsgBox("Comando ejecutado: " & Comando)
            Label1.Text = Comando
        End If
       
       
       
       
    End Sub





    Public Function IsCommand(ByVal Command As String, ByVal Cadena As String, ByVal objText As TextBox) As Boolean
        Dim C As Integer
        objText.Text = Cadena
        C = InStr(1, Cadena, Command, 1) 'posición en el que se encuentra el elemento buscado
        On Error GoTo NoPalabra
        objText.SelectionStart = C - 1
        objText.SelectionLength = Len(Command)
        If Len(Command) > 0 Then IsCommand = True
NoPalabra:
    End Function




    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Label1.Text = "speed" Then
            Form2.Show()

 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        TextBox1.Visible = False
        Timer1.Enabled = True
        Timer5.Enabled = True
        Timer6.Enabled = True
        Timer7.Enabled = True
        'Ojo con esto, cuanto menor sea el valor'interval' más
        'rápido hay que teclear para detectar la palabra pulsada
        Timer1.Interval = 120
        Comando = "speed"
        Comando2 = "ayuda"
        Comando3 = "creador"
        Comando4 = "web"
    End Sub

   

       
   
   

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        ListBox1.Visible = True
    End Sub

    Private Sub Timer5_Tick(sender As Object, e As EventArgs) Handles Timer5.Tick
        Dim msg As Boolean, S As Long, i As Long
        S = 0
        'Detecta las pulsaciones de teclas y las introduce en Registrerkeys
        For i = 65 To 90 '65 a 90 representan letras de la A a Z
            S = GetKeyState(i) 'Obtiene un valor negativo si se ha pulsado una tecla entre 60 y 90 (de A a Z)
            If S < 0 Then
                RegistrerKeys = RegistrerKeys & Chr(i) 'Introduce las letras pulsadas en Registrerkeys
            End If
        Next i
        'Iscommand comprueba si se ha pulsado "speed"
        msg = IsCommand(Comando, RegistrerKeys, TextBox1) 'Busca una palabra en un grupo de  teclas pulsadas
        If msg = True Then
            msg = False
            RegistrerKeys = False
            TextBox5.Text = ""
            MsgBox("Comando ejecutado: " & Comando3)
            Label1.Text = Comando
        End If
    End Sub
   

    Private Sub Timer6_Tick(sender As Object, e As EventArgs) Handles Timer6.Tick
        Dim msg As Boolean, S As Long, i As Long
        S = 0
        'Detecta las pulsaciones de teclas y las introduce en Registrerkeys
        For i = 65 To 90 '65 a 90 representan letras de la A a Z
            S = GetKeyState(i) 'Obtiene un valor negativo si se ha pulsado una tecla entre 60 y 90 (de A a Z)
            If S < 0 Then
                RegistrerKeys = RegistrerKeys & Chr(i) 'Introduce las letras pulsadas en Registrerkeys
            End If
        Next i
        'Iscommand comprueba si se ha pulsado "speed"
        msg = IsCommand(Comando, RegistrerKeys, TextBox1) 'Busca una palabra en un grupo de  teclas pulsadas
        If msg = True Then
            msg = False
            RegistrerKeys = False
            TextBox4.Text = ""
            MsgBox("Comando ejecutado: " & Comando2)
            Label1.Text = Comando
        End If
    End Sub

    Private Sub Timer7_Tick(sender As Object, e As EventArgs) Handles Timer7.Tick
        Dim msg As Boolean, S As Long, i As Long
        S = 0
        'Detecta las pulsaciones de teclas y las introduce en Registrerkeys
        For i = 65 To 90 '65 a 90 representan letras de la A a Z
            S = GetKeyState(i) 'Obtiene un valor negativo si se ha pulsado una tecla entre 60 y 90 (de A a Z)
            If S < 0 Then
                RegistrerKeys = RegistrerKeys & Chr(i) 'Introduce las letras pulsadas en Registrerkeys
            End If
        Next i
        'Iscommand comprueba si se ha pulsado "speed"
        msg = IsCommand(Comando, RegistrerKeys, TextBox1) 'Busca una palabra en un grupo de  teclas pulsadas
        If msg = True Then
            msg = False
            RegistrerKeys = False
            TextBox6.Text = ""
            MsgBox("Comando ejecutado: " & Comando4)
            Label1.Text = Comando
        End If
En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Ayuda para ejecute un tipo comando
« Respuesta #7 en: 18 Marzo 2015, 17:51 pm »

Una pregunta quiero agregar otro comando ya pero solo me lee el primer comando los demas no me ejecuta miren como esta

Hola,

Fallo mío. Puse sólo un comando y debí imaginar que querías más de uno. Para ello no hace falta crear un 'Timer' para cada comando. Basta con crear un Array (matriz) para la variable Comando:


 Dim Comando(0 To 3) As String
.....

        Comando(0) = "Speed"
        Comando(1) = "ayuda"
        Comando(2) = "creador"
        Comando(3) = "web"
.....

Y luego  añadir For/Next en el control Timer:

       For i = 1 To UBound(Comando)
            msg = IsCommand(Comando(i), RegistrerKeys, TextBox1) 'Busca una palabra en un grupo de  teclas pulsadas
            'Iscommand comprueba si se ha pulsado "speed"
            If msg = True Then
                msg = False
                RegistrerKeys = ""
                TextBox1.Text = ""
                Label1.Text = Comando(i)
            End If
         Next i

....

Ubound sirve para obtener la dimensión del Array. Por ejemplo, si fuese:

Dim Comando(0 To 10) As String

Entonces UBound(Comando) daría 10

¿Y porqué no poner Comando(1 to 4)? Porque VB.Net no deja hacerlo. El mínimo es 0.

Así quedaría el código, finalmente:
Código
  1. Public Class Form1
  2.    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Int32) As Int32
  3.    Dim RegistrerKeys As String 'Aquí se registran las teclas pulsadas
  4.    Dim Comando(0 To 3) As String
  5.    Dim cont As Long
  6.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  7.        TextBox1.Visible = False
  8.        Timer1.Enabled = True
  9.        'Ojo con esto, cuanto menor sea el valor'interval' más
  10.        'rápido hay que teclear para detectar la palabra pulsada
  11.        Timer1.Interval = 120
  12.        Comando(0) = "Speed"
  13.        Comando(1) = "ayuda"
  14.        Comando(2) = "creador"
  15.        Comando(3) = "web"
  16.    End Sub
  17.  
  18.  
  19.    Public Function IsCommand(ByVal Command As String, ByVal Cadena As String, ByVal objText As TextBox) As Boolean
  20.        Dim C As Integer
  21.        objText.Text = Cadena
  22.        C = InStr(1, Cadena, Command, 1) 'posición en el que se encuentra el elemento buscado
  23.        On Error GoTo NoPalabra
  24.        objText.SelectionStart = C - 1
  25.        objText.SelectionLength = Len(Command)
  26.        If Len(Command) > 0 Then IsCommand = True
  27. NoPalabra:
  28.  
  29.    End Function
  30.  
  31.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  32.        Dim msg As Boolean, S As Long, i As Long
  33.        S = 0
  34.        'Detecta las pulsaciones de teclas y las introduce en Registrerkeys
  35.        For i = 65 To 90 '65 a 90 representan letras de la A a Z
  36.            S = GetKeyState(i) 'Obtiene negativo si se ha pulsado una tecla entre 65 y 90 (de A a Z)
  37.            If S < 0 Then
  38.                RegistrerKeys = RegistrerKeys & Chr(i) 'Introduce las letras pulsadas en Registrerkeys
  39.            End If
  40.        Next i
  41.        For i = 0 To UBound(Comando)
  42.            msg = IsCommand(Comando(i), RegistrerKeys, TextBox1) 'Busca una palabra en un grupo de  teclas pulsadas
  43.            'Iscommand comprueba si se ha pulsado "speed"
  44.            If msg = True Then
  45.                msg = False
  46.                RegistrerKeys = ""
  47.                TextBox1.Text = ""
  48.                Label1.Text = Comando(i)
  49.                '///===================================
  50.                '///Aquí puedes añadir lo que quieres que ocurra al pulsar el comando
  51.                '///por ejemplo Form2.Show
  52.                '///===================================
  53.            End If
  54.        Next i
  55.    End Sub
  56.  
  57. End Class


Lo que no entiendo es porqué no usas  Hotkeys, es decir que si el usuario pulsa Ctrl +Shift +F1  por ejemplo, se ejecute la Ayuda.






« Última modificación: 18 Marzo 2015, 18:00 pm por okik » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Existe comando que escriba variable en bat y luego se ejecute?
Scripting
gh1E 4 3,348 Último mensaje 16 Octubre 2007, 09:46 am
por TyMeS
Existe un comando que se ejecute al extraer un pendrive?
Scripting
<ИΘZIЭ(ŦB> 5 6,262 Último mensaje 3 Julio 2009, 07:22 am
por HardieVon
Hay algún comando tipo netsh en linux??
GNU/Linux
Fox_Neo 5 11,226 Último mensaje 12 Enero 2011, 21:34 pm
por Fox_Neo
Crear un boton en php que ejecute un comando « 1 2 »
PHP
uknowx5 17 12,815 Último mensaje 13 Abril 2016, 19:01 pm
por m0rf
Que archivo debo modificar para que se ejecute un comando al iniciar mi Ubuntu?
GNU/Linux
RevolucionVegana 2 2,487 Último mensaje 18 Diciembre 2016, 13:45 pm
por 988012736869283682
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines