• 24-10-2012, 22:59:46
    #1
    Merhaba GlobalKeyboardhook.cs dosyası kullanarak keylogger yazdım çalışıyor tek sorun türkçe karakterlerde hatalar oluyor. ı , ş gibi yazılar tuhaf simgelerle gözüküyor. Bunu nasıl yaparımm

    Kodlar :
     globalKeyboardHook ghook;
    
           
    
            public Form1()
    
            {
    
                
    
                InitializeComponent();
    
            }
    
    
    
            private void button1_Click(object sender, EventArgs e)
    
            {
    
                ghook.hook();
    
            }
    
    
    
            private void Form1_Load(object sender, EventArgs e)
    
            {
    
                ghook = new globalKeyboardHook();
    
                ghook.KeyDown += new KeyEventHandler(ghook_KeyDown);
    
                foreach (Keys key in Enum.GetValues(typeof(Keys)))
    
                    ghook.HookedKeys.Add(key);
    
            }
    
            public void ghook_KeyDown(object sender, KeyEventArgs e)
    
            {
    
                textBox1.Text += ((char)e.KeyValue).ToString();
    
            }
    
    
    
            private void button2_Click(object sender, EventArgs e)
    
            {
    
                ghook.unhook();
    
            }
  • 25-10-2012, 07:03:53
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    user32.dll icerisinde yer alan ToUnicodeEx apisini kullanabilirsiniz.

    Iyi forumlar.
  • 25-10-2012, 08:58:25
    #3
    R10SS adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    user32.dll icerisinde yer alan ToUnicodeEx apisini kullanabilirsiniz.

    Iyi forumlar.
    Cevap için teşekkürler ama kendi programıma nasıl uygulayacağım.. çünkü internetten indirdiğim başka bir cs dosyası ile program çalışıyor
  • 25-10-2012, 09:29:39
    #4
    programlama ogrenerek uygulayabilirsin.
  • 25-10-2012, 11:20:37
    #5
    R10SS adlı üyeden alıntı: mesajı görüntüle
    programlama ogrenerek uygulayabilirsin.
    Zaten programlama biliyorum.. otamasyon programları yazmayı biliyorum ama hiç projeye dllimport etmedim araştırarak buldum. bu klavye dinlemeyide araştırarak buldum zaten. internette araştırıyor user32.dll api kullanma diye kaynak yok. lütfen yardımcı ol
  • 25-10-2012, 13:47:42
    #6
    Üyeliği durduruldu
    aTKn94 adlı üyeden alıntı: mesajı görüntüle
    Zaten programlama biliyorum.. otamasyon programları yazmayı biliyorum ama hiç projeye dllimport etmedim araştırarak buldum. bu klavye dinlemeyide araştırarak buldum zaten. internette araştırıyor user32.dll api kullanma diye kaynak yok. lütfen yardımcı ol
    dll import un tek bir yöntemi var zaten

    http://www.enginpolat.com/etiket/dllimport/ burada örneği var mesela
  • 25-10-2012, 14:14:02
    #7
    sorunun dll import ile bir alakası yok

                foreach (Keys key in Enum.GetValues(typeof(Keys)))
                    ghook.HookedKeys.Add(key);
    buradaki döngüyle hookedkeys e karakterler ekleniyor. döngüden çıktıktan sonraki satıra bir break point koyarsan hookedkeys dizisinde türkçe karakter olmadığını görürsün..

    GlobalKeyboardhook.cs dosyasını açtığında

    buradaki
            public int hookProc(int code, int wParam, ref keyboardHookStruct lParam)
    fonksiyonundaki lParam argumanın vkCode değeri ascii olarak türkçe karakterleri desteklemediğini görürsün. mesela Ş harfi 351 döndermesi gerekirken 186 gibi bir değer dönderiyor bu da haliyle HookedKeys dizisindeki 186 ascii koda sahip karaktere tekabül ediyor ve yanlış sonuç alıyorsun

    çözüm olarak genelde yapılan türkçe karakterler için özel kontroller yapman olabilir

    if (HookedKeys.Contains(key))

    in altına
    if((int)key==351)
    .... //Ş yi dönder
    şeklinde bir şeyler yapabilirsin
  • 25-10-2012, 14:21:45
    #8
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    sorunun dll import ile bir alakası yok

                foreach (Keys key in Enum.GetValues(typeof(Keys)))
                    ghook.HookedKeys.Add(key);
    buradaki döngüyle hookedkeys e karakterler ekleniyor. döngüden çıktıktan sonraki satıra bir break point koyarsan hookedkeys dizisinde türkçe karakter olmadığını görürsün..

    GlobalKeyboardhook.cs dosyasını açtığında

    buradaki
            public int hookProc(int code, int wParam, ref keyboardHookStruct lParam)
    fonksiyonundaki lParam argumanın vkCode değeri ascii olarak türkçe karakterleri desteklemediğini görürsün. mesela Ş harfi 351 döndermesi gerekirken 186 gibi bir değer dönderiyor bu da haliyle HookedKeys dizisindeki 186 ascii koda sahip karaktere tekabül ediyor ve yanlış sonuç alıyorsun

    çözüm olarak genelde yapılan türkçe karakterler için özel kontroller yapman olabilir

    if (HookedKeys.Contains(key))

    in altına
    if((int)key==351)
    .... //Ş yi dönder
    şeklinde bir şeyler yapabilirsin
    Çok iyi anlatmışsın. Helal olsun. Eve gidince deneyeceğim. İnş sorun çıkmaz. Senin sayende birkaç şey daha öğrendim. İyi çalışmalar
  • 25-10-2012, 14:27:56
    #9
    Aynı sorunun cevabı burda da var http://stackoverflow.com/questions/6...e-keys-to-char
    ilk cevabı uygulayınca düzeliyo