Datakent Ana Sayfa
Anasayfa Anasayfa > Diğer bölümler > Borland Delphi
  Aktif Konular Aktif Konular RSS: Herhangi bir pencereyi transparan yapmak
  Yardım Yardım  Hızlı Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

Herhangi bir pencereyi transparan yapmak

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Herhangi bir pencereyi transparan yapmak
    Gönderim Zamanı: 11.Kasim.2008 Saat 21:16

procedure TForm1.Button1Click(Sender: TObject);
const
  cUseAlpha: array [Boolean] of Integer = (0, LWA_ALPHA);
  cUseColorKey: array [Boolean] of Integer = (0, LWA_COLORKEY);
var
  AStyle: Integer;
  FAlphaBlend: Boolean;
  FTransparentColor: Boolean;
  xxx:THandle;
begin

 xxx := FindWindow(pchar('Notepad'), nil); //pencereyi bağlığı ile bul not defteri için
// xxx := FindWindow('SciCalc', 'Hesap Makinesi'); //herhangi bir pencereyi sınıfı ve başlığıyla bulmak için kullanılbilir

 AStyle := GetWindowLong(xxx, GWL_EXSTYLE);

 FAlphaBlend := TRUE;
 FTransparentColor := TRUE;

 SetWindowLong(xxx, GWL_EXSTYLE, AStyle or WS_EX_LAYERED);

//aşağıdaki fonsiyonda parametre olarak kullanılan 80 orandır. 1-100 arası değer verebilirsiniz
 SetLayeredWindowAttributes(xxx,clBlack,80,
           cUseAlpha[FAlphaBlend] or cUseColorKey[FTransparentColor]);
end;
 
//erişim yapılacak program veya nesne aktif olmalı. not defterine erişilecekse not defteri o an açıkolması gerekiyor...


Düzenleyen murat_turan - 11.Kasim.2008 Saat 21:21
Yukarı Dön
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11.Kasim.2008 Saat 21:18
pencere başlıklarını ve sınıf isimlerini öğrenmenizde size yardımcı olabilecek bence bir numaralı yazılım. Microsoft Spy++ indir
 
bu yazılımla formlardaki istenilen nesnenin HWND numarasıda öğrenilebiliyor. zaten bir nesnenin HWND numarasını bildiğinizde o nesneye takla attırabilirsniz :)
zamanım olunca HWND konusunda sizlere örneklerde göndermeye çalışacağım...


Düzenleyen murat_turan - 11.Kasim.2008 Saat 21:19
Yukarı Dön
turknetyazilim Açılır Menü Göster
Moderator Group
Moderator Group
Simge

Kayıt Tarihi: 18.Ocak.2008
Bulundugu Yer: Balıkesir
Online: Sitede Değil
Gönderilenler: 214
  Alıntı turknetyazilim Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 12.Kasim.2008 Saat 09:54

//Murat Turan
var
 i:HWND;
begin

 i:=FindWindowEx(
    FindWindowEx(FindWindow('Tana', 'DenemeFormu'), 0, 'TGroupBox', 'GroupBox1'),
     0, 'TEdit', 'Edit4' );

  SendMessage(i, WM_CLOSE ,0,0);

  {
  ana formun adı :ana tabi tip olara Tana olmuş oluyor.
  başlığı DenemeFormu
  bu formun altında
  GroupBox1  adıda bir bileşen var.
  bu bileşenin de tipi TGroupBox ve Başlığıda GroupBox1
  bu GroupBox1 içerisinde
  TEdit tipinde adı Edit4 ve içeriğide Edit4 olan bir bileşen var
  işte o bileşen kapatılıyor.

  FindWindowEx  fonksiyonunu da kullanım amacı da iç içe geçmiş kontrolleri
  yönlendirmek. aslında bu sayede sabit olan
  kontroller rahatlıkla idare edilebilir.
  direkt HWND bilgisiyle bu işi yapmak zor. biliyorsunuz ki. uygulama her
  açıldığında içerisindeki bütün bileşenler yeniden windows tarafından
  numaralandırılır.

  Microsoft Spy++ kullanılarak açık uygulamaların HWND,ClassName vs.. bilgilerine
  rahatlıkla erişebilirsiniz.

  //* * * * * * * *
  i:=$000103E0;
  //* * * * * * * *
  mesela o an işlem yapmak istediğim Edit4 ün o anki HWND numarası üsteki
  gibi idi. aslında i değişkenine sadece bu değer atayıp da bu kontrolü
  yönlendirebilirdim. ama üste belirttiğin gibi bu numara programın bir sonraki
  başlatılışında değişeceği için o anlık sonuç verecektir.
  üste uzunca yazdığım kod ise uygulama ne zaman başlatılırsa başlatılsın
  işe yarayacaktır.

  Aklıma gelmişken başka bir öenek daha vereyim. mesela hesap makinesinin
  Geri tuşunu kapatalım. Bunuda yapabiliriz. Tabi bu işlemler sadece kapatmak için değildir
  Ben WM_CLOSE parametresini kullandım. böype epeyce parametre mevcut.
  }

  i:=FindWindowEx(FindWindow('SciCalc', 'Hesap Makinesi'),0,'Button','Geri tuşu');

  {
  Unutmayın bu isimleri Microsoft Spy++ ile buluyorum.
  Bu programı nereden bulurum diyorsanız
  Microsoft Visual Studio .NET 2003 kurulum paketi
  veya Microsoft Visual Studio 6 Paketinde mevcut.
  }

Yukarı Dön
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 12.Kasim.2008 Saat 18:06
sağol ismail. bunu arşivden bulup gönderirim diyordum :) sen işi getirmişsin.
Yukarı Dön
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 28.Aralik.2008 Saat 22:13
Yukarı Dön
turknetyazilim Açılır Menü Göster
Moderator Group
Moderator Group
Simge

Kayıt Tarihi: 18.Ocak.2008
Bulundugu Yer: Balıkesir
Online: Sitede Değil
Gönderilenler: 214
  Alıntı turknetyazilim Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 01.Ocak.2009 Saat 16:50
Hocam Gerşekten Çok Güzel Bir Yazılım
Benim En Çokda işime Renk Değerlerinin Bulmada Yarayacak
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Menü Göster



Bu Sayfa 0,262 Saniyede Yüklendi. [power by : WebWiz]