Sanal Klavye

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
athena
Üye
Mesajlar: 92
Kayıt: 20 Eyl 2003 06:32
Konum: Antalya
İletişim:

Sanal Klavye

Mesaj gönderen athena »

Arkadaslar Klavyesiz kullanılmadan çalışan bilgisayarlarda
kullanılmak üzere Xp deki klavye gibi sanal bir klavye componenti yada böyle bir uygulama yapan varmıdır?

Selamlar,
"Millete efendilik olmaz,hizmet olur,
kim Millete hizmet ederse,
o milletin efendisidir."
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

sorun ne? sadece örnek mi? yoksa nasıl yapıldığı mı? Ben bu konuda araştırmam oldu. Virtual Keybord şeklinde aratabilirsin. bdn.borland.com adresinde böyle bir örnek mevcut.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Ekrana koyacağın 100 tane button ile yapmak mümkün, bilmediğimiz extra başka bir işlem mi yapmak istiyorsun ?
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Sanırım Recep bey, ekrandaki aktif pencereye tuşları göndermek istiyor. Bununla ilgili daha önce konuşmuştuk sanırım. Bir fonksiyor vardı SendKeys32 olması lazım. İstediğiniz tuşu gönderebiliyordunuz.

Kolay gelsin.
Kullanıcı avatarı
athena
Üye
Mesajlar: 92
Kayıt: 20 Eyl 2003 06:32
Konum: Antalya
İletişim:

Mesaj gönderen athena »

Mustafa'nın dediği gibi o an aktif form hangi formsa klavye ona bilgi gonderecek. Kullanıcı form üzerinde herhangi bir component üzerinde olabilir. Edit, Curredit,rx,grid,buton herhangi biri üzerinde burada bir tuşa basınca sanal klavye çıkacak sonra sanal klavyeden bastığı her tuş o formda ne görev yapıyorsa onu yapacak yada bir edit sahasındaysa girilen tuşlar editin içine gelecek.

Kiosk makinalarındaki gibi gerçek klavye mouse yok. Touch screen bir ekran var.

Tam olarak istediğim bu. Problem sanal klave formundan basılan bilgiyi diger aktif forma aktarmak.

Selamlar,
"Millete efendilik olmaz,hizmet olur,
kim Millete hizmet ederse,
o milletin efendisidir."
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- Sorun sadece sendkeys ile bitmiyor... Şöyle bir problem var...

- ActiveControl denen olay problem yaşatabilir... Yani siz kendi formunuzdaki butona bastığınızda bu tuşun hangi forma/edit kutusuna vs. gönderileceğinin bilinmesi gerekir... Yani sizin formdaki butona basıldığında, formunuz focus olmamalı ki nereye senkey edileceği bilinsin... :!:

:idea: Çözüm olarak aklıma gelen ilk şey, WinSight programı benzeri bir tracker tasarlamak.... Windows'daki tüm mesajlar hook edilerek sizin formunuzdan bir önceki form/bileşen vs. hangisi onun bir listeden tespit edilmesini sağlamak şeklinde. Zor ve detaylı bir işlemdir, kolay gelsin...
Resim
Resim ....Resim
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

SndKey32 fonksiyonu VisualBasic'dekinin bir kopyası niteliğindedir. Ben bunu kullanmadım. Dediğin gibi focus olayı gerçekten sorun oluyor. Bunun için sana söylediğim örneği incelemelisin. Bak bir de tam link veriyorum:
http://codecentral.borland.com/codecent ... g?id=18590

İki API komutu var. GetForegroundWindow ve SetForegroundWindow. Bunları SDK dökümanlarından incele. Tek yapman gereken bir tuş komponenti yapmak. Ardından şunun gibi bir mesajı yakalayıp işlemen lazım:

Yakalanacak mesaj ve prosedür:

Kod: Tümünü seç

 procedure WMMouseActivate(var Msg: TWMMouseActivate);message WM_MOUSEACTIVATE;
Prosedürün içeriği:

Kod: Tümünü seç

procedure TForm1.WMMouseActivate(var Msg: TWMMouseActivate);
begin
  msg.Result := MA_NOACTIVATE;
  if (Wnd <> GetForegroundWindow)and(Wnd <> Handle)and(Wnd <> 0) then
  begin
    SetForegroundWindow(Wnd);
    Windows.SetFocus(Wnd);
  end;
end;
kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Yukarda verilen linke bir gözatayım dedim... Koyulaştırdığım yeri okuyun... 8) Kusursuz... Focus almayan bir form olduğunu yazıyor... Bahsettiğim sorun da ortadan kalmış oldu...
The example shows how to create and use a form that acts as a virtual numeric keypad. The form is topmost and will not take the focus when clicked upon. Clicks on its "buttons" will create key events that go to whatever control in the active window that has the focus.
Resim
Resim ....Resim
Cevapla