Sanal Klavye

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.

Sanal Klavye

İleti athena » 06 Mar 2004 06:45

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ı
athena
Üye
 
İleti: 92
Kayıt: 20 Eyl 2003 05:32
Konum: Antalya

İleti fatihtolgaata » 06 Mar 2004 10:35

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ı
fatihtolgaata
Üye
 
İleti: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul

İleti mrmarman » 07 Mar 2004 11:05

- Ekrana koyacağın 100 tane button ile yapmak mümkün, bilmediğimiz extra başka bir işlem mi yapmak istiyorsun ?
Resim
Resim
Kullanıcı avatarı
mrmarman
Üye
 
İleti: 3655
Kayıt: 09 Arl 2003 08:13
Konum: Ankara

İleti mussimsek » 08 Mar 2004 01:11

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ı
mussimsek
Admin
 
İleti: 7268
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul

İleti athena » 08 Mar 2004 09:43

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ı
athena
Üye
 
İleti: 92
Kayıt: 20 Eyl 2003 05:32
Konum: Antalya

İleti mrmarman » 08 Mar 2004 10:41

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
Kullanıcı avatarı
mrmarman
Üye
 
İleti: 3655
Kayıt: 09 Arl 2003 08:13
Konum: Ankara

İleti fatihtolgaata » 08 Mar 2004 11:36

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/codecentral/ccweb.exe/listing?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ı
fatihtolgaata
Üye
 
İleti: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul

İleti mrmarman » 08 Mar 2004 11:48

- 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
Kullanıcı avatarı
mrmarman
Üye
 
İleti: 3655
Kayıt: 09 Arl 2003 08:13
Konum: Ankara


Programlama

Kimler çevrimiçi

Bu forumu görüntüleyenler: Bing [Bot], Google [Bot] ve 7 misafir