wat doe ik fout F8?

Status
Niet open voor verdere reacties.

m4dc0w344

Gebruiker
Lid geworden
8 aug 2011
Berichten
377
hallo
de titel zegt het al wat doe ik fout

wanner je op F8 drukt typt ie de text di in textbox1 staat, maar zo aasl je al raad doet ie dan niet ?
[JS]Public Class form1
<System.Runtime.InteropServices.DllImport("user32.dll")> Public Shared Function GetAsyncKeyState(ByVal vKey As Keys) As Short
End Function



Public Sub checkKeyboard()
If GetAsyncKeyState(Keys.F8) <> 0 Then
Dim Typen() As Char = TextBox1.Text.Replace(":", Chr(13)).ToCharArray()
For Each item In Typen
SendKeys.Send(item)
Threading.Thread.Sleep(10)
Next
End If
End Sub
end class[/JS]
 
En zo?

[cpp]Public Sub checkKeyboard() Handles MyBase.KeyDown
If GetAsyncKeyState(Keys.F8) <> 0 Then
Dim Typen() As Char = TextBox1.Text.Replace(":", Chr(13)).ToCharArray()
For Each item In Typen
SendKeys.Send(item)
Threading.Thread.Sleep(10)
Next
End If
End Sub[/cpp]
 
nee ook niet
dit is alles wat ik heb
p.s er zit nu wel een knop op maar dan is alleen om te testen of het wel werkte zonder F8
Public Class form1
<System.Runtime.InteropServices.DllImport("user32.dll")> Public Shared Function GetAsyncKeyState(ByVal vKey As Keys) As Short
End Function



Public Sub checkKeyboard() Handles MyBase.KeyDown
If GetAsyncKeyState(Keys.F8) <> 0 Then
Threading.Thread.Sleep(1)
Dim Typen() As Char = TextBox1.Text.Replace(":", Chr(13)).ToCharArray()
For Each item In Typen
SendKeys.Send(item)
Threading.Thread.Sleep(10)
Next
End If
End Sub

Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
TextBox1.Text = Clipboard.GetText
End Sub

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
TextBox1.Text = Clipboard.GetText
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Threading.Thread.Sleep(1000)
Dim Typen() As Char = TextBox1.Text.Replace(":", Chr(13)).ToCharArray()
For Each item In Typen
SendKeys.Send(item)
Threading.Thread.Sleep(10)
Next
End Sub
End Class
 
Wat gaat er dan met mijn code mis?

Bij mij werkt 't namelijk wel gewoon.

(Wel dit erbij houden natuurlijk: )

[cpp]<System.Runtime.InteropServices.DllImport("user32.dll")> Public Shared Function GetAsyncKeyState(ByVal vKey As Keys) As Short
End Function[/cpp]
 
Laatst bewerkt:
Ja dat heb ik er bij maar hij doet het niet zelfs als ik een andere key gebruik, ik vind het maar gek worden.
 
Kijk of-ie je code wel uitvoert. (Met een breakpoint of een MsgBox o.i.d.)
 
nee nog steeds niet, ik heb een nieuw project aangemaakt met de code
[JS]Public Class form1
<System.Runtime.InteropServices.DllImport("user32.dll")> Public Shared Function GetAsyncKeyState(ByVal vKey As Keys) As Short
End Function

Public Sub checkKeyboard() Handles MyBase.KeyDown
If GetAsyncKeyState(Keys.F8) <> 0 Then
MsgBox("je drukt op F8")
End If
End Sub
end class[/JS]

maar dat werkt ook niet ik vroeg me af of die system.runtime code in het begin wel goed is ?
 
Verander:
Code:
Public Sub checkKeyboard() Handles MyBase.KeyDown
Eens in:
Code:
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
 
Even dat je het weet: Er zal alleen een MsgBox worden weergegeven als er ook op je Form is gefocust.
Eén control gefocust is al teveel. Ik denk dat daar het probleem zit.
Dus The Mighty Atoms code zal dan ook niet werken.

Welke control is gefocust als je F8 in typt? Als dat alles kan zijn moet je gaan hooken: http://support.microsoft.com/kb/319524.
 
ik heb nog niet naar die site gekregen maar ik heb vandaag in eeens een fout melding
Knipsel.JPG
 
Voor het eerste: Je moet wel iets van een timer ofzo hebben zodat het programmaatje ook checkt of je F8 indrukt als je niet op precies dat moment die sub aanroept...
Dus: Timertje erin, interval op 100 ofzo en als het form opent de timer starten. Bij het Tick-event de aanroep naar je sub.

Dan krijg je ongeveer dit:
Code:
Public Class Form1

    <System.Runtime.InteropServices.DllImport("user32.dll")> Public Shared Function GetAsyncKeyState(ByVal vKey As Keys) As Short
    End Function

    Public Sub checkKeyboard()
        If GetAsyncKeyState(Keys.F8) <> 0 Then
            Dim Typen() As Char = TextBox1.Text.Replace(":", Chr(13)).ToCharArray()
            For Each item In Typen
                SendKeys.Send(item)
                Threading.Thread.Sleep(10)
            Next
        End If
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        F8Timer.Stop()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        F8Timer.Interval = 100
        F8Timer.Start()
    End Sub

    Private Sub F8Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles F8Timer.Tick
        checkKeyboard()
    End Sub
End Class


Voor het 2e:
FF rebuilden misschien.
En anders alles kopiëren naar een nieuw project :confused:

Succes!
 
Laatst bewerkt:
Vergeet mijn vorige post, dat sloeg nergens op.

JoZ heeft gelijk wat betreft het gefocuste control. Het formulier zelf moet gefocust zijn. Eventuele controls op je form mogen dus geen focus hebben anders werkt het inderdaad niet.

Tenzij!
Tenzij je de KeyPreview property van het form op True zet, dan zal het wel werken, ongeacht de control die op dat moment focus heeft.
 
JoZ heeft gelijk wat betreft het gefocuste control. Het formulier zelf moet gefocust zijn. Eventuele controls op je form mogen dus geen focus hebben anders werkt het inderdaad niet.

Als het goed is, zorgt die ' GetAsyncKeyState' ervoor dat de form niet gefocust hoeft te zijn...
 
Geen idee, ik ben verder niet bekend met GetAsyncKeyState, ik gebruik zelf een externe dll. In ieder geval werkt het niet als KeyPreview False is en er gefocust is op een control. Als KeyPreview True is, dan wel.
 
@The Mighty Atom: Je slaat de spijker op z'n kop! Dat is de oplossing. :D

MartinJM zei:
Als het goed is, zorgt die ' GetAsyncKeyState' ervoor dat de form niet gefocust hoeft te zijn...
Ik heb zelf ondervonden dat dit wel het geval is ;)


Dus m4dc0w344: Zet de KeyPreview-property van je form op True en gebruik je code van post #8. :)
 
Wow, heey allemaal harstikke bedankt voor al jullie antwoorden wanneer ik weer achter mijn pc zit dan ga ik het proberen
 
hee m4dc0w344, misschien rare vraag, maar ken jij mij als ik zeg dat ik ontbijtkoekje heet?
zoniet laat dan maar, dan vergis ik me :$

liefs ontbijtkoekje
p.s ik weet dat het niets met computers te maken heeft, maar dit was de enige manier om met je in contact te komen, want dat wil ik graag :$
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan