Visual Basic - Tecla presionada

Life is soft - evento anual de software empresarial
   
Vista:

Tecla presionada

Publicado por Francisco fordonez0522@gmail.com (4 intervenciones) el 23/06/2017 00:14:00
este es mi codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Short
 
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    If (GetAsyncKeyState(46)) Then
        Dim sRenglon As String = Nothing
        Dim strStreamW As Stream = Nothing
        Dim strStreamWriter As StreamWriter = Nothing
        Dim ContenidoArchivo As String = Nothing
        ' Donde guardamos los paths de los archivos que vamos a estar utilizando ..
        Dim PathArchivo As String
        Dim i As Integer
        Try
 
            If Directory.Exists("C:\Estadistica") = False Then ' si no existe la carpeta se crea
                Directory.CreateDirectory("C:\Estadistica")
            End If
 
            Dim numero As New Random
 
            Dim minumero As Integer = numero.Next(0, 1000000)
            Windows.Forms.Cursor.Current = Cursors.WaitCursor
            PathArchivo = "C:\Estadistica\" & minumero & ".txt" ' Se determina el nombre del archivo con la fecha actual
 
            'verificamos si existe el archivo
 
            If File.Exists(PathArchivo) Then
                strStreamW = File.Open(PathArchivo, FileMode.Open) 'Abrimos el archivo
            Else
                strStreamW = File.Create(PathArchivo) ' lo creamos
            End If
 
            strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) ' tipo de codificacion para escritura
 
 
            'escribimos en el archivo
 
            strStreamWriter.WriteLine("1 reproduccion")
 
 
            strStreamWriter.Close() ' cerramos
 
        Catch ex As Exception
            MsgBox("Error al Guardar la ingormacion en el archivo. " & ex.ToString, MsgBoxStyle.Critical, Application.ProductName)
            strStreamWriter.Close() ' cerramos
        End Try
    End If
    Dim counter = My.Computer.FileSystem.GetFiles("C:\Estadistica").Count
    If counter <> 0 Then
        'MsgBox(counter)
        Me.cantidad.Text = counter
    End If
 
 
End Sub
 
Private Sub FrmInicio_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
    Timer1.Start()
 
End Sub

lo que pretendo hacer en el es que cada vez que se presione la tecla Supr en cualquier parte del sistema operativo, se e cree un archivo en la carpeta estadistica, pero tengo un problema si yo tengo presionado la tecla se me creen varios, y quiero que al presionarla solo me cree uno, una idea o ejemplo)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Tecla presionada

Publicado por ricardoam (13 intervenciones) el 23/06/2017 05:10:25
Intenta solo cuando se libera la tecla en el Up no en el Down.

Este enlace te dará la idea de lo que debes hacer.

https://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx

No lo trates como un true y false, ve la respuesta al presionar y liberar la tecla, allí esta tu solución.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tecla presionada

Publicado por Francisco (4 intervenciones) el 23/06/2017 05:20:26
Tiene un ejemplo de como hacerlo? Debe funcionar que si le doy supr en cualquier programa o ventana me cree un archivo en una carpeta no se si me entender? El código anterior lo hace solamente que me crea muchos si tengo presionada la tecla, y quiero que solo me cree uno aunque la tecla este presionada me entiendes?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tecla presionada

Publicado por ricardoam (13 intervenciones) el 23/06/2017 07:34:44
Hola, si te entendí, parece que tu no me entediste a mi.

Tu codigo lo repite porque la tecla esta presionandose, esto es, esta en Down,

Cambia el código para que solo se realice cuando la tecla es Up.

Down ocurre mientras tengas la tecla presionada, por eso te lo copia varias veces.
Up ocurre cuando la liberas, eso lo hará solo una vez.

Hay otras formas de hacer lo que quieres, pero lo que tienes puede funcionar y solo le falta afinar ese detalle.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tecla presionada

Publicado por Francisco Ramon Ordoñez Andrade (4 intervenciones) el 23/06/2017 17:18:03
Ya logre hacer lo que me dices, pero tengo un problema con el timer, que tiene un poco de retraso para hacer el conteo de cuantas veces solte la tecla, que otra forma me aconsejas poder hacer esto? existe otra forma o funcion si puede tu ayudarme con esto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar