Uzak Bağlantı Desteği
Paylaştığım klavye hook kodları, yalnızca temel bir örnek olarak klavye hook işlemini göstermek için ücretsiz olarak sunulmuştur.
Funny Macro | Klavye Yardımcısı adlı ürün ise tamamen farklı bir yaklaşımla, her kullanıcı için özel olarak buildlenmiş .exe dosyaları şeklinde çalışır.
Bu ürün, Rise Online gibi oyunlarda klavye ve fare kontrollerini optimize etmek için tasarlanmıştır ve en temel özelliği, anti-cheat sistemlerine yakalanmamak için her açılışta farklı bir build ve isimle çalışmasıdır.
Ücretsiz kodlar bu özellikleri içermez; onları yalnızca topluluğa yardımcı olmak amacıyla paylaştım. Ayrıntılı bilgi ve satın alma için: (Funny Macro - Uzak Bağlantı)
VB.NET Kodu Kullanımı
VB.NET ile yazılmış klavye hook kodu, düşük seviyeli klavye olaylarını yakalamak ve özellikle Control tuşuna basıldığında bir işlem yapmak için tasarlanmıştır. Bu kod, bir Windows uygulamasında klavye olaylarını dinlemek ve kullanıcı arayüzünü güncellemek için uygundur.
Temel Fonksiyonlar ve Kullanımları
HookKeyboard()
Klavye hook'unu başlatır ve klavye olaylarını dinlemeye alır.Controltuşuna basıldığında bir işlem tetiklenir (örneğin, bir etiketin metni güncellenir).- Kullanımı: Bir formda bu fonksiyonu çağırarak klavye dinlemeyi başlatabilirsiniz. Mesela, bir düğmeye tıklama olayında
HookKeyboard()kullanılabilir.
- Kullanımı: Bir formda bu fonksiyonu çağırarak klavye dinlemeyi başlatabilirsiniz. Mesela, bir düğmeye tıklama olayında
UnhookKeyboard()
Aktif klavye hook'unu kaldırır ve dinlemeyi durdurur.- Kullanımı: Uygulama kapatıldığında veya hook’u devre dışı bırakmak istediğinizde bu fonksiyonu çağırın. Örneğin, form kapanırken
UnhookKeyboard()ile kaynakları temizleyebilirsiniz.
- Kullanımı: Uygulama kapatıldığında veya hook’u devre dışı bırakmak istediğinizde bu fonksiyonu çağırın. Örneğin, form kapanırken
KeyboardCallback()
Klavye olaylarını işleyen ana geri dönüş fonksiyonudur.Controltuşuna basıldığında bir etiketin metnini günceller ve olayı engeller.- Kullanımı: Bu fonksiyon,
HookKeyboard()tarafından otomatik ayarlanır ve sizin manuel müdahalenize gerek yoktur.
- Kullanımı: Bu fonksiyon,
CheckHooked()
Hook’un başarıyla ayarlanıp ayarlanmadığını kontrol eder. Hook aktifse kullanıcı arayüzünü günceller (örneğin, bir etikete mesaj yazar ve bir düğmenin rengini değiştirir). Aksi halde, bir hata mesajı gösterir.- Kullanımı:
HookKeyboard()çağrıldığında otomatik çalışır, ama isterseniz manuel kontrol için de kullanabilirsiniz.
- Kullanımı:
Pratik Kullanım Örneği
Bu kodu bir Windows Forms uygulamasında şöyle kullanabilirsiniz:
- Bir form oluşturun ve içine bir etiket (
LblStatus) ile bir düğme (BtnSetKeyboard) ekleyin. - Düğmeye tıklama olayında
HookKeyboard()fonksiyonunu çağırın. - Form kapanırken
UnhookKeyboard()ile hook’u kaldırın. Controltuşuna basıldığında etiket güncellenir ve olay yakalanır.
Python Kodu Kullanımı
Python ile yazılmış klavye hook kodu, klavye olaylarını yakalar ve Control tuşuna basıldığında bir işlem gerçekleştirir. Bu kod, forumdan (njordsoftware)’in katkılarıyla hazırlanmıştır. Kendisine bu destek için teşekkür ederiz! (Forum Linki)
Temel Fonksiyonlar ve Kullanımları
hook_keyboard()
Klavye hook'unu başlatır ve klavye olaylarını dinlemeye alır.Controltuşuna basıldığında bir işlem tetiklenir.- Kullanımı: Betiği çalıştırdığınızda bu fonksiyonu çağırarak klavye dinlemeyi başlatabilirsiniz. Örneğin, çağrıldığında konsolda "Keyboard Activated" mesajı görünür.
unhook_keyboard()
Klavye hook'unu kaldırır ve dinlemeyi durdurur.- Kullanımı: Dinlemeyi bitirmek istediğinizde bu fonksiyonu çağırın. Örneğin, betik sonunda
Entertuşuna basıldığında otomatik olarak çağrılır.
- Kullanımı: Dinlemeyi bitirmek istediğinizde bu fonksiyonu çağırın. Örneğin, betik sonunda
keyboard_callback()
Klavye olaylarını işleyen geri dönüş fonksiyonudur.Controltuşuna basıldığında olayı yakalar ve engeller.- Kullanımı:
hook_keyboard()tarafından otomatik ayarlanır, manuel müdahale gerektirmez.
- Kullanımı:
check_hooked()
Hook’un başarıyla ayarlanıp ayarlanmadığını kontrol eder ve konsola bir mesaj yazdırır ("Keyboard Activated" veya "Keyboard Not Activated").- Kullanımı:
hook_keyboard()içinde otomatik çağrılır, ama manuel kontrol için de kullanılabilir.
- Kullanımı:
Pratik Kullanım Örneği
Bu kodu bir Python betiği olarak şöyle çalıştırabilirsiniz:
- Kodu bir
.pydosyasına kaydedin. - Terminalde dosyayı çalıştırın (
python keyboard.py). - Klavye olayları dinlenmeye başlar ve
Controltuşuna basıldığında olay yakalanır. - Konsolda "Press Enter to unhook the keyboard..." mesajı göründüğünde
Entertuşuna basarak hook’u kaldırabilirsiniz.
Not
Bu kodun çalışması için pywin32 kütüphanesine ihtiyacınız var. Kurulumu için şu komutu kullanabilirsiniz:
pip install pywin32
Arduino Kombinasyonu Kullanımı
PC'de çalışan klavye hook kodu, klavye olaylarını yakalayarak seri port üzerinden Arduino'ya iletir. Arduino ise bu verileri alarak fiziksel tuş simülasyonu yapar. Bu kod, forumdan (chubush)'in katkılarıyla hazırlanmıştır. Kendisine bu destek için teşekkür ederiz! (Forum Linki)
Nasıl çalışır:
- PC kodu: Klavye olaylarını yakalar ve "D:65" (A tuşu basıldı) formatında Arduino'ya gönderir
- Arduino kodu: Seri porttan gelen verileri okur ve fiziksel tuş simülasyonu yapar
Arduino Tarafı Gereksinimleri
Arduino'da C/C++ ile yazılmış bir sketch gereklidir. Bu sketch:
- Seri porttan gelen "D:65" gibi mesajları okur
- Virtual keyboard library kullanarak tuşları simüle eder
- Arduino Leonardo/Micro gibi HID destekli board gerektirir
Pratik Kullanım Örneği
Bu sistemi kurmak için:
- Arduino Leonardo/Micro board'unuzu hazırlayın
- Arduino IDE'de Keyboard library ile sketch yazın (seri porttan veri okuyup tuş simüle eden)
- PC'de klavye hook programını çalıştırın
- Arduino'yu bilgisayara bağlayın ve COM port numarasını ayarlayın
- Sistem çalışmaya başlar - klavye olayları Arduino üzerinden simüle edilir
Gereksinimler
- Arduino tarafında: Arduino Leonardo/Micro (HID destekli) ve Keyboard library
- Bağlantı: USB seri port bağlantısı
- PC tarafında: Hook programı ve doğru COM port ayarı
Kodlar
Imports System.Runtime.InteropServices
Imports System.Reflection
Namespace Helper
Public Module Keyboard
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As IntPtr) As Boolean
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Integer, ByVal lpfn As KeyboardHookDelegate, ByVal hmod As IntPtr, ByVal dwThreadId As Integer) As IntPtr
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As IntPtr, ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As FMHOOKSTRUCT) As Integer
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Public Structure FMHOOKSTRUCT
Public vkCode As Integer
Public scanCode As Integer
Public flags As Integer
Public time As Integer
Public dwExtraInfo As Integer
End Structure
Private Const HC_ACTION As Integer = 0
Private Const LLKHF_UP As Integer = &H80
Public Const VK_CONTROL = &H11
Private Const WH_KEYBOARD_LL As Integer = 13&
Public KeyboardHandle As Integer
Public Function IsHooked(ByRef Hookstruct As FMHOOKSTRUCT) As Boolean
If Hookstruct.vkCode = VK_CONTROL AndAlso (Hookstruct.flags And LLKHF_UP) = 0 Then
Return True
End If
Return False
End Function
Public Function KeyboardCallback(ByVal Code As Integer, ByVal wParam As Integer, ByRef lParam As FMHOOKSTRUCT) As Integer
If (Code = HC_ACTION) Then
If (IsHooked(lParam)) Then
Main.LblStatus.Text = "Klavye aktif edildi.."
Return 1
End If
End If
Return 0
End Function
Public Delegate Function KeyboardHookDelegate(ByVal Code As Integer, ByVal wParam As Integer, ByRef lParam As FMHOOKSTRUCT) As Integer
<MarshalAs(UnmanagedType.FunctionPtr)>
Private callback As KeyboardHookDelegate
Public Sub HookKeyboard()
callback = New KeyboardHookDelegate(AddressOf KeyboardCallback)
KeyboardHandle = SetWindowsHookEx(WH_KEYBOARD_LL, callback, Marshal.GetHINSTANCE([Assembly].GetExecutingAssembly.GetModules()(0)).ToInt32, 0)
Call CheckHooked()
End Sub
Public Sub CheckHooked()
If (Hooked()) Then
Main.LblStatus.Text = "Klavye aktif edildi.."
Main.BtnSetKeyboard.ForeColor = Color.Green
'Main.Text = "Aktif Edildi!"
Else
Main.LblStatus.Text = "Klavye aktif edilemedi: " & Err.LastDllError
End If
End Sub
Private Function Hooked() As Boolean
Return KeyboardHandle <> IntPtr.Zero
End Function
Public Sub UnhookKeyboard()
If Hooked() Then
UnhookWindowsHookEx(KeyboardHandle)
End If
End Sub
End Module
End Namespace
Uzak Bağlantı Yardımcısı
Funny Macro | Uzak Bağlantı Yardımcısı, Rise Online oyununda oyuncuların oyun deneyimini geliştirmek için tasarlanmış bir yardımcı araçtır. Klavye ve fare kontrollerini optimize ederek daha rahat bir oyun deneyimi sunar.
Güncelleme Notları
FunnyMacro'nun tüm sürüm güncellemelerini ve iyileştirmelerini takip edin