Klavye Üzerindeki Ledlerin Sakıp Söndürmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
selam
Üye
Mesajlar: 51
Kayıt: 02 Tem 2003 07:08

Klavye Üzerindeki Ledlerin Sakıp Söndürmek

Mesaj gönderen selam »

Merhaba;

Winamp programının bir plug-in inde görmüştüm. Ledler yanıp söndüğü halde Caps Lock, Num Lock durumları değişmiyor. Delphide bu işlemi yapan kodları araştırdığımda hep lock durumlarını değiştirenlere rastladım. Bunu Delphi kodlarıyla yapabilir miyiz? Assembly falan kullanmak mı gerekiyor?

Kolay Gelsin.
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

kod 1

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject);
function SetState(Key: Integer; Value: Boolean): Boolean;
begin
  if Odd(GetAsyncKeyState(Key)) <> Value then
  begin
    keybd_event(Key, MapVirtualkey(Key, 0), KEYEVENTF_EXTENDEDKEY, 0);
    keybd_event(Key, MapVirtualkey(Key, 0), KEYEVENTF_EXTENDEDKEY or
      KEYEVENTF_KEYUP, 0);
  end;
end;


begin
SetState(VK_NUMLOCK, True);
  Sleep(50);
  SetState(VK_NUMLOCK, False);
  Sleep(50);
  SetState(VK_CAPITAL, True);
  Sleep(50);
  SetState(VK_CAPITAL, False);
  Sleep(50);
  SetState(VK_SCROLL, True);
  Sleep(50);
  SetState(VK_SCROLL, False);
  Sleep(50);
  SetState(VK_CAPITAL, True);
  Sleep(50);
  SetState(VK_CAPITAL, False);
  Sleep(50);



  end;
//*** Mesela bir timer ın event ına bu kodu yazın. Bilgisayarda belirli bir süre
//***hareket olmadığında bu timer ı aktif hale getirin.
//*** Klavyedeki ışıklar beirli bir düzenle yanıp sönmeye başlayacaktır :-))
//***Hadi kolay gelsin...

kod 2

Kod: Tümünü seç

//KLAVYEDEKİ IŞIKLARI SOLDAN SAĞA DOĞRU KAYDIRMAK
//CODED BY FERHAT AKKAŞ 3.7.2002 www.ferhat.tr.cx
//1 adet timer, 2 adet buton ekleyelim.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  F: TKeyboardState; (*** ÖNEMLİ ***)

implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Interval:=500;
timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if F[VK_NUMLOCK] = 0 then F[VK_NUMLOCK] := 1
  else F[VK_NUMLOCK] := 0;
  sleep(100);
  SetKeyboardState(F);

  if F[vk_capital] = 0 then F[vk_capital] := 1
  else F[vk_capital] := 0;
  sleep(100);
  SetKeyboardState(F);

  if F[vk_Scroll] = 0 then F[vk_Scroll] := 1
  else F[vk_Scroll] := 0;
  sleep(100);
  SetKeyboardState(F);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
FORM1.ONCreate(SENDER);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Enabled:=false;
GetKeyboardState(F);
F[vk_Scroll]:= 0;
F[vk_NumLock]:= 0;
F[vk_Capital]:= 0;
SetKeyboardState(F);
end;

end.
kod 3

Kod: Tümünü seç

-left to right
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval:=500;
Timer1.enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
keys : TKeyboardState;
begin
GetKeyboardState( keys );
   keys[VK_NUMLOCK] := 1;
   SetKeyboardState( keys );
   sleep(50);
   GetKeyboardState( keys );
   keys[VK_NUMLOCK] := 0;
   SetKeyboardState( keys );
   sleep(50);
   GetKeyboardState( keys );
   keys[VK_CAPITAL] := 1;
   SetKeyboardState( keys );
   sleep(60);
   GetKeyboardState( keys );
   keys[VK_CAPITAL] := 0;
   SetKeyboardState( keys );
   sleep(60);
   GetKeyboardState( keys );
   keys[VK_SCROLL]  := 1;
   SetKeyboardState( keys );
   sleep(50);
   GetKeyboardState( keys );
   keys[VK_SCROLL]  := 0;
   sleep(5);
   SetKeyboardState( keys );
   GetKeyboardState( keys );
end;
----------------------------------------------------------------------
-Right to left
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval:=500;
Timer1.enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
keys : TKeyboardState;
begin
   GetKeyboardState( keys );
   keys[VK_SCROLL]  := 1;
   SetKeyboardState( keys );
   sleep(5);
   GetKeyboardState( keys );
   keys[VK_SCROLL]  := 0;
   SetKeyboardState( keys );
   sleep(50);
   GetKeyboardState( keys );
   keys[VK_CAPITAL] := 1;
   SetKeyboardState( keys );
   sleep(60);
   GetKeyboardState( keys );
   keys[VK_CAPITAL] := 0;
   SetKeyboardState( keys );
   sleep(60);
   GetKeyboardState( keys );
   keys[VK_NUMLOCK] := 1;
   SetKeyboardState( keys );
   sleep(50);
   GetKeyboardState( keys );
   keys[VK_NUMLOCK] := 0;
   SetKeyboardState( keys );
   sleep(50);
end;
-------------------------------------------------------------------------------------------------
night rider / left <>right
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval:=500;
Timer1.enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
keys : TKeyboardState;
begin
GetKeyboardState( keys );
   keys[VK_NUMLOCK] := 1;
   SetKeyboardState( keys );
   sleep(100);
   GetKeyboardState( keys );
   keys[VK_NUMLOCK] := 0;
   SetKeyboardState( keys );
   sleep(100);
   GetKeyboardState( keys );
   keys[VK_CAPITAL] := 1;
   SetKeyboardState( keys );
   sleep(120);
   GetKeyboardState( keys );
   keys[VK_CAPITAL] := 0;
   SetKeyboardState( keys );
   sleep(120);
   GetKeyboardState( keys );
   keys[VK_SCROLL]  := 1;
   SetKeyboardState( keys );
   sleep(100);
   GetKeyboardState( keys );
   keys[VK_SCROLL]  := 0;
   sleep(100);
   SetKeyboardState( keys );
   GetKeyboardState( keys );
   keys[VK_CAPITAL] := 1;
   SetKeyboardState( keys );
   sleep(120);
   GetKeyboardState( keys );
   keys[VK_CAPITAL] := 0;
   SetKeyboardState( keys );
   sleep(120);
   GetKeyboardState( keys );
   keys[VK_NUMLOCK] := 0;
   SetKeyboardState( keys );
   sleep(100);
   GetKeyboardState( keys );
   keys[VK_NUMLOCK] := 1;
   SetKeyboardState( keys );
   sleep(100);
end;
selam
Üye
Mesajlar: 51
Kayıt: 02 Tem 2003 07:08

Mesaj gönderen selam »

Teşekkürler.
Ben sadece ledleri değiştirmeyi düşünüyorum. Yani lock durumları değişmeyecek. Caps Lock ledi yanık olduğu zaman mesela caps lock kapalı olacak
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

bunları bir dene, belki aralarından biri öledir :roll:
selam
Üye
Mesajlar: 51
Kayıt: 02 Tem 2003 07:08

Mesaj gönderen selam »

Denedim olmuyor. Yine de teşekkürler.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba..

- Ayıp etmiş olmazsam, WinAMP'da müzik dinlerken ve bu plug açıkken, boş bir Word belgesi açsanız da örneğin 'A' harfine parmağınızı basılı tutsanız ? Denediniz mi ?

- Çünkü bildiğim odur ki, Win32'den itibaren bu tip erişime izin verilmiyor... Plugin'i yapana helal olsun Yazarına mail atarak bu konuda fikir sorabilirsiniz. Böylece foruma da katkınız olacaktır.
Resim
Resim ....Resim
selam
Üye
Mesajlar: 51
Kayıt: 02 Tem 2003 07:08

Mesaj gönderen selam »

mrmarman yazdı:Merhaba..

- Ayıp etmiş olmazsam, WinAMP'da müzik dinlerken ve bu plug açıkken, boş bir Word belgesi açsanız da örneğin 'A' harfine parmağınızı basılı tutsanız ? Denediniz mi ?

- Çünkü bildiğim odur ki, Win32'den itibaren bu tip erişime izin verilmiyor... Plugin'i yapana helal olsun Yazarına mail atarak bu konuda fikir sorabilirsiniz. Böylece foruma da katkınız olacaktır.
Denedim etkilemiyor. Hatta şuan plug-in açık. Plug-in in adı KeybVis
Ama şöyle birşey aklıma geldi. Belki tuşlara basıldığında eski haline getiriyordur. Yazarın mail ini bulamadım. Eğer erişim vermiyorsa dediğim gibidir. Zaten bazen harfleri çiftleyebiliyor.
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

tuşlara basarken caps lock'un kapalı olmasını sağlayabilirsin ;)
buda bi çözüm :roll:
selam
Üye
Mesajlar: 51
Kayıt: 02 Tem 2003 07:08

Mesaj gönderen selam »

Çözümü buldum. Led ışıkları değişmeye başladığı zaman ledlerin lik durumlarını alırız. Caps Lock vs. basıldığında o değişkeni de değiştiririz. Tuşlara basıldığında Lockların durumunu değişkenden alırız.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- WinAMP plugininin adını verir misin ? Biraz önce yazarını merak ettiğimden hiç üşenmedim bir tanesini indirip kurdum.

- Tahminlerimde haklı olduğumu gördüm. Eğer aynı plugin ise mevzu bahis olan, ya plugin'i çalışır durumda değilken denedin ya da deneme yapatığın müzik parçası CapsLock ledini sürekli yakar türden veya hiç yakmaya türden stabil bir parça idi ... :idea:

Resim

- Boşuna emek ve zaman harcama diye yardımcı olmaya çalışıyorum. Şimdi senden ricam kendi WinAMP plug'ininin ayarlar ekranını açarak burada verdiğim ile eş olup olmadığını ve yapabiliyorsan ekran görüntüsünü buraya yolla.

- Çözümün ise kendi programın içerisinde işlevsel ancak programın açıkken bir Word dökümanı vb. kullanımında sorun teşkil edecektir.
Resim
Resim ....Resim
selam
Üye
Mesajlar: 51
Kayıt: 02 Tem 2003 07:08

Mesaj gönderen selam »

Resim

Plug-in adı KeybVis. Ben daha farklı bir plug-in daha kullanmıştım. Onda lock durumları da değişiyordu. Fakat bunda değişmiyor. Galiba benim dediğim işlevi yapıyor bu plug-in de.

Uğraştığınız için teşekkür ederim.
Cevapla