Arkadaşlar baya bi araştırma yaptıktan sonra Ctrl+Esc de dahil Başlat butonunu kilitleyen bişi buldum.Mevcut olanlar XP'de olmuyodu.
viewtopic.php?t=6035&highlight=ctrl+esc
Yalnız ben bunu kendi programıma nasıl uyguluycam onu bilmiyorum???
Bu dll'yi direk programda kullansam bi mahsuru olur mu?
Ctrl+Esc
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Merhabalar,
İnanmayacaksınız belki ama daha 2 saat önce yazıp bitirdiğim ve kendi programlarım için kullanacağım bir koddan bahsediyorsunuz.
Şimdi tüm istediğiniz bu iş için sistem genelini kapsayan bir HOOK (kançalama) yapmanız gerekiyor. Vereceğim bu örnek sadece 2000/XP ve üstü sistemlerde çalışmaktadır. WH_KEYBOARD_LL olarak deklare edilen ancak Delphide karşılığı olmayan bir HOOK ile yapılıyor bu.
bunu şu şekilde tanımlaya bilirsiniz. Yada WH_KEYBOARD_LL için sadece 13 değerini de kullanabilirsiniz.
Bu kod çok sade bir kullanımdır, bu kodun başka varyasyonlarınıda yazmıştım, şöyleki, basılan tuşları benim ana formuma gönderiyor flaan tuş basılınca birişlem yaptırtıyordum. Aslında kötü niyetli kişiler için tehlikeli bir kod olacağını düşünüyorum. Bu sizlerin karakteristik özelliğinize bağlı olacağı için günahı sevabı size aittir. Ancak yine kötü niyetli kullanım olmaması amacıyla sadece ALT-ESC, ALT-TAB, ALT-F4, Sol ve Sağ WinKEY tuşlarını engelelyen bu örneği gönderiyorum.
ilk önce DLL'in tüm kodlarını veriyorum.
önce yukarıdaki kodu derleyin. sonra programınızda şu şekilde çağırınız.
Elbetteki DLL ile EXE aynı klasörde olacaktır. Yaw DLL olmasın ben bunu sadece EXE'ye koyayım demeyin. O zaman sistem genelini kapsamaz.
Saygılar.
İnanmayacaksınız belki ama daha 2 saat önce yazıp bitirdiğim ve kendi programlarım için kullanacağım bir koddan bahsediyorsunuz.
Şimdi tüm istediğiniz bu iş için sistem genelini kapsayan bir HOOK (kançalama) yapmanız gerekiyor. Vereceğim bu örnek sadece 2000/XP ve üstü sistemlerde çalışmaktadır. WH_KEYBOARD_LL olarak deklare edilen ancak Delphide karşılığı olmayan bir HOOK ile yapılıyor bu.
bunu şu şekilde tanımlaya bilirsiniz. Yada WH_KEYBOARD_LL için sadece 13 değerini de kullanabilirsiniz.
Kod: Tümünü seç
Const
WH_KEYBOARD_LL = 13;
ilk önce DLL'in tüm kodlarını veriyorum.
Kod: Tümünü seç
{ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(c) 2006, Musonya Software and Internet Technologies
web : http://www.musonya.com
e-mail : mdicle@gmail.com
Main project name : JustFilter ADVANCED
Unit name : xxxx.dpr
Output name : xxxx.dll
Create date : 29.04.2006 01:00
Created by : M. Murat DiCLE
First description : ALT-F4, ALT-TAB, ALT-ESC, Sol ve Sağ WinKey
tuşlarını yasaklar.
Release version : 1.0
Method : Ana programdan SetHook yada FreeHook olarak çağrılır.
Todo :
What's new :
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Last updated by : M. Murat Dicle
Last updated date : 29.04.2006 02:29
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }
library WinKeyHook;
uses Windows;
//eğer DLL için version bilgileri girmek istiyorsanız bu satır olmalıdır.
//aksi durumda çıkan DLL için version information eklenmeyecektir.
//ki buda 2KB daha az çıktı oluşturacaktır.
{$R *.res}
type
KBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: ULONG;
end;
var
NextHookHandle : HHOOK;
function MsgFilterFunc(Code: Integer; w : wparam; l: lparam): integer; stdcall;
begin
if (Code < 0) or (w = PM_NOREMOVE) then
Result := CallNextHookEx(NextHookHandle, Code, w, l)
else
begin
with KBDLLHOOKSTRUCT(pointer(l)^) do
if (vkCode = VK_ESCAPE) OR (vkCode = VK_TAB) OR
(vkCode = VK_F4) OR
(vkCode = VK_LWIN) OR (vkCode = VK_RWIN) Then
Result := 1
else
Result := CallNextHookEx(NextHookHandle, Code, w, l);
end;
end;
function SetHook: Boolean; stdcall;
begin
NextHookHandle := SetWindowsHookEx(13, @MsgFilterFunc, HInstance, 0);
Result := True;
end;
function FreeHook: Boolean; stdcall;
begin
UnHookWindowsHookEx(NextHookHandle);
Result := true;
end;
exports SetHook, FreeHook;
begin
end.
Kod: Tümünü seç
.
.
.
function SetHook : Boolean; stdcall; external 'WinKeyHook.dll';
function FreeHook : Boolean; stdcall; external 'WinKeyHook.dll';
implementation
.
.
.
procedure TForm1.Checkbox1Click(Sender : TObject);
begin
if CheckBox1.Checked then
SetHook
else
FreeHook;
end;
.
.
.
procedure TForm1..FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeHook;
end;
.
.
.
Saygılar.