İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C#'cilar bi yardim...

WARIORKRAL01.09.20125 cevap1.771 görüntüleme
2007'den beri501 mesaj
#1
Simdi oncelikle hayirli gunler.Hemen olaya geciyorum.
Simdi bir proje uzerinde calisiyorum fakat yapamadigim bisey var.
Programin form disindayken yani bilgisayarda dolasirken klavyeden girilen bir tusu yakalamasini ve bir fonksiyon yapmasini istiyorum.
mesela ben klavyeden "n" tusuna basinca bir fonksiyon yapicak.
Istedigim sey bu n tusunu nasil programa yakalatabilecegim. Ayni zamanda fonksiyonu nasil baslatacagim.
Cevaplar
WARIORKRAL Konuyu açan
2007'den beri501 mesaj
#2
hicmi kimse yok yardim edebilecek.
2011'den beri597 mesaj
#3
C#'da imkanlar kısıtlı diye biliyorum ama, olabilirde tabi... :P

C++'da windows kütüphanesi ait bir fonksiyon vardı, GetAsyncKeyState() gibi birşey olması gerek.

bu bir argüman alıyordu hatırladığım kadarı ile, klavyedeki her tuşun ascii kodunu mu ne alıyordu, sonra ona basıldığında bu fonksiyon true döndürüyordu galiba. :D

bi ara allegro ile kendime oyun yaparken epey takmıştım buna, c#'da da çok farklı olmasa gerek, bi timer'a bu fonksiyonu kontrol ettir, iterasyon ilede 0'dan 255'e kadar argümanları geçir buna, true dönüncede argüman olarak verilen rakamı yazdır biyere, bastığın tuş o argümandaki koda eşit işte öyle anlarsın. :D

ps: Dünyanın sonu... Bir c# programcısına bu dili neden bırakması gerektiği dışında bir konuda akıl veriyorum... :D
2007'den beri2.589 mesaj
#4
c#'cı olmasam da sana bir ip ucu vereyim. Olay c#'da hooking denen bir yöntem ile yapılmaktaymış. Bir grup arkadaş da bunu oturmuş bir kütüphaneye çevirmiş.

http://globalmousekeyhook.codeplex.com/

incele derim. Kütüphaneyi indirip kullanabilirsin sanırım. Documentation altında basitçe mouse event yakalama anlatılmış.

Tahminen klavye yakalama daha da basittir :)

Not : Site İngilizce. Her programcı arkadaşa tavsiye ettiğimiz gibi dili öğrenirken dili ( İngilizce'yi ) öğrenmeyi unutmayın.

Bu da bir örnek içermekte.

http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
2008'den beri2.773 mesaj
#5
Merhaba,
C#'da imkanlar sınırlı değildir. C# ile Windows API'ya erişip, dll'ler içerisinden istediğin fonksiyonları extern edip kullanabilirsin.
Bu metoda PInvoke adı veriliyor.
Örneklere şu site üzerinden erişebilirsin.
http://www.pinvoke.net
Konu ile ilgili olarak, user32.dll içerisinden GetKeyState() fonksiyonu işini görür :
http://www.pinvoke.net/default.aspx/user32.GetKeyState
Veya LeaveNhA 'nın dediği gibi GetAsyncKeyState() fonksiyonuda işini görür.
http://www.pinvoke.net/default.aspx/user32.GetAsyncKeyState
Projene uygulaması sana kalmış. PInvoke ile C++ ile yapabildiğin herşeyi yapabilirsin. Bir pencerenin veya elinde Handle'ı olan herhangi bir objenin tüm mesaj sırasına erişip içerisinden istedikleri tek tek seçip kullanabilirsin. Sana kalmış.
Kolay gelsin.
Misafir
#6
warior combo mu yapıcaksın :)

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.