Vb.net conteggio numeri

lunedì 08 agosto 2011 - 17.44
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  Office 2010  |  Firefox

ale77.rr Profilo | Newbie

Salve a tutti,
è la prima volta che scrivo in un forum, quindi abbiate pazienza.

Vi posto il codice di un programma in vb.net che sto facendo:

Public Class Form1
Dim Count As Byte
Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Integer) As Integer
Private Sub cmd_Start_Click(sender As Object, e As System.EventArgs) Handles cmd_Start.Click
Timer1.Start()
Count = 0
End Sub
Private Sub cmd_Stop_Click(sender As Object, e As System.EventArgs) Handles cmd_Stop.Click
Timer1.Stop()
End Sub
Private Sub cmd_Esc_Click(sender As Object, e As System.EventArgs) Handles cmd_Esc.Click
Timer1.Stop()
Me.Close()
End Sub
Private Sub Timer1_Tick(sender As Object, e As System.EventArgs) Handles Timer1.Tick
For i = 48 To 57
If GetAsyncKeyState(i) <> 0 Then Count = Count + 1
Next
If Count = 15 Then
Timer1.Stop()
SendKeys.Send("ENTER")
Count = 0
Sleep(2000)
SendKeys.Send("ESC")
End If
End Sub
End Class

deve semplicemente contare 15 numeri dopodiche premere INVIO e dopo 2 secondi ESC.

Il problema è che arrivato a 15 aspetta 2 secondi e poi preme INVIO e subito ESC. (così sembrerebbe).

PS. mancano le parentesi graffe, ma è voluta la cosa (così riesco a testare il programma con il blocco note)

Grazie per l' aiuto che vorrete darmi,

Sono ben accetti anche consigli per migliorare il codice.......


Grazie
Ciao

Gho5t Profilo | Junior Member

Prova a guardare questo link:
http://msdn.microsoft.com/it-it/library/system.windows.forms.sendkeys.send.aspx

in basso nelle note c'è scritto che bisogna utilizzare dei codici speciali per quei tasti in cui non sono accociati caratteri da visualizzare...

in più vorrei dirti che è inutile fare il timer di 1 secondo e contare fino a 15 con una variabile... è inutile e dispendioso... utilizza la proprietà Interval...
di norma è settata ad 1000 millisecondi che è 1 secondo...

se imposti 15000 a Interval nella funzione "Timer1_Tick" ti entrerà solo dopo 15 secondi... prova ad utilizzare questo codice al posto del tuo:

Timer1.Stop() SendKeys.Send("{ENTER}") Sleep(2000) SendKeys.Send("{ESC}")
Se un uomo non è disposto a correre qualche rischio per le sue idee, o le sue idee non valgono nulla o non vale nulla lui
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5