VB. NET te Yazdıgım Bi Programda Tuşlara Basıldıgında İşlem Yaptırmak İstiyorum Ama Nedense Olmuyo.. Kod: Declare Function GetAsyncKeyState Lib "user32" As Integer Public Const KEY_F1 = &H70 Public Const KEY_F2 = &H71 Public Const KEY_F3 = &H72 Public Const KEY_F4 = &H73 Public Const KEY_F6 = &H75 Public Const KEY_F7 = &H76 Public Const KEY_F8 = &H77 Public Const KEY_F9 = &H78 Public Const KEY_F10 = &H79 Kod: Sub Form_KeyDown If GetAsyncKeyState(KEY_F1) Then TextBox1. Text = End If End Sub Bu Kodların Sonucunda F1 Tuşuna Basıldıgında Textbox Ta Deneme Yazmasını İstiyorum Ama Yazmıyo. Bunu Basarsam Tuslara Farklı Fonksiyonlar Yükliycem Ama Bi Turlu Basaramadm. Nerde Hata Yapıyorum?

buda... -

Kodlar İse Yaradı Tesekkur Ederim. Ama Bi Msn Verebilirmisin Daha Ayrıntılı KOnusmak İsterim Bu Konuyu =)

keydown olayı aktif olan nesneye tuş gönderdiğin zaman çalışır mesela textbox ın keydown olayında f1 tuşu gönderirsen deneme olarak yazması için Kod: Private Sub TextBox1_KeyDown Handles TextBox1. KeyDown If e. KeyValue = Keys. F1 Then TextBox1. Text = "deneme" End If End Sub kodunu yazman gerekir. zaten aktif nesnenin üzerine gönderilen tuşları kontrol edeceğin için GetAsyncKeyState fonksiyonu ile tuşları dinlemene gerek kalmaz keydown olayında senin tuşun direk e. KeyValue değişkeni içerisine atanır ve if yapısı ile kontrol edersin. eğer form üzerinden değilde windows üzerinden form aktif olmasa bile dinlemesini istiyorsan GetAsyncKeyState fonksiyonu kullanman gerekir. if GetAsyncKeyState(KEY_F1) = -32767 Then şeklinde kontrol edersin. tuşa basılma anında otomatik bu değer atanır bunu da timer içinde sürekli olarak kontrol etmen gerekir. -

silinebilir.. -

Yada Low Level Keyboard Hook kullanabilirsin... Hemde formun focus ozelligini kaybettse bile.. Bunu yapabilmek için dediklerimi tek tek uygula.. ilk olarak; project>add class daha sonra asagidaki kodu copy paste yap.. Kod: Public Class KeyboardHook Private Const HC_ACTION As Integer = 0 Private Const WH_KEYBOARD_LL As Integer = 13 Private Const WM_KEYDOWN = &H100 Private Const WM_KEYUP = &H101 Private Const WM_SYSKEYDOWN = &H104 Private Const WM_SYSKEYUP = &H105 Private Structure KBDLLHOOKSTRUCT Public vkCode As Integer Public scancode As Integer Public flags As Integer Public time As Integer Public dwExtraInfo As Integer End Structure Private Declare Function SetWindowsHookEx Lib "user32" _ Alias "SetWindowsHookExA" _ As Integer Private Declare Function CallNextHookEx Lib "user32" _ As Integer Private Declare Function UnhookWindowsHookEx Lib "user32" _ As Integer Private Delegate Function KeyboardProcDelegate _ As Integer Public Shared Event KeyDown Public Shared Event KeyUp Private Shared KeyHook As Integer Private Shared KeyHookDelegate As KeyboardProcDelegate Public Sub New KeyHookDelegate = New KeyboardProcDelegate KeyHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyHookDelegate, System. Runtime. InteropServices. Marshal. GetHINSTANCE(System. Reflection. Assembly. GetExecutingAssembly. GetModules (0)). ToInt32, 0) End Sub Private Shared Function KeyboardProc As Integer If Then Select Case wParam Case WM_KEYDOWN, WM_SYSKEYDOWN RaiseEvent KeyDown(CType Case WM_KEYUP, WM_SYSKEYUP RaiseEvent KeyUp(CType End Select End If Return CallNextHookEx End Function Protected Overrides Sub Finalize UnhookWindowsHookEx MyBase. Finalize End Sub End Class ondan sonra ana formunda direk olarak implement et public class form1 altina; Kod: Private WithEvents kbHook As New KeyboardHook daha sonrada bu iki events i copy paste yap; herhangi bir component altina degil direk olarak bos bir yere copy paste yap cunku bu eventslar içinde istedigin gibi karsilastirma filan yapacaksin... Kod: Private Sub kbHook_KeyDown Handles kbHook. KeyDown If Key. ToString = "F1" Then TextBox1. Text = "Fuujin" End Sub Private Sub kbHook_KeyUp Handles kbHook. KeyUp Debug. WriteLine End Sub f1 'e tiklayinca textbox içinde fuujin yazar... -