Autor
|
Tema: Ayuda para ejecute un tipo comando (Leído 3,015 veces)
|
pablomillon
Desconectado
Mensajes: 12
|
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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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
Mensajes: 12
|
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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
pues en ese caso podrías usar la api GetAsyncKeyState para detectar las teclas pulsadas.
|
|
|
En línea
|
|
|
|
okik
Desconectado
Mensajes: 462
|
Hola Podría ser algo así --Se necesita--- -1 control Timer -1 Label -1 Textbox 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 cont As Long Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Visible = False Timer1.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 = 70 Comando = "Speed" 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 Timer1_Tick(ByVal sender As System.Object, ByVal e As System.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 65 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 = "" TextBox1.Text = "" MsgBox("Palabra pulsada: " & Comando) Label1.Text = Comando End If End Sub 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
Mensajes: 12
|
Gracias amigos me sirvieron los dos consejos gracias.
|
|
|
En línea
|
|
|
|
pablomillon
Desconectado
Mensajes: 12
|
Una pregunta quiero agregar otro comando ya pero solo me lee el primer comando los demas no me ejecuta miren como esta 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
Mensajes: 462
|
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: 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(0 To 3) As String Dim cont As Long Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Visible = False Timer1.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(0) = "Speed" Comando(1) = "ayuda" Comando(2) = "creador" Comando(3) = "web" 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 Timer1_Tick(ByVal sender As System.Object, ByVal e As System.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 negativo si se ha pulsado una tecla entre 65 y 90 (de A a Z) If S < 0 Then RegistrerKeys = RegistrerKeys & Chr(i) 'Introduce las letras pulsadas en Registrerkeys End If Next i For i = 0 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) '///=================================== '///Aquí puedes añadir lo que quieres que ocurra al pulsar el comando '///por ejemplo Form2.Show '///=================================== End If Next i End Sub 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Existe comando que escriba variable en bat y luego se ejecute?
Scripting
|
gh1E
|
4
|
3,301
|
16 Octubre 2007, 09:46 am
por TyMeS
|
|
|
Existe un comando que se ejecute al extraer un pendrive?
Scripting
|
<ИΘZIЭ(ŦB>
|
5
|
6,221
|
3 Julio 2009, 07:22 am
por HardieVon
|
|
|
Hay algún comando tipo netsh en linux??
GNU/Linux
|
Fox_Neo
|
5
|
11,145
|
12 Enero 2011, 21:34 pm
por Fox_Neo
|
|
|
Crear un boton en php que ejecute un comando
« 1 2 »
PHP
|
uknowx5
|
17
|
12,741
|
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,450
|
18 Diciembre 2016, 13:45 pm
por 988012736869283682
|
|