Klavye Üzerindeki Ledlerin Sakıp Söndürmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Klavye Üzerindeki Ledlerin Sakıp Söndürmek
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.
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.
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
kod 1
kod 2
kod 3
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: 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;
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
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.
- 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ı KeybVismrmarman 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.
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.
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
- 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 ...

- 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.
- 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 ...


- 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.