choreme açık sayfaların başlık veya adresini alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

choreme açık sayfaların başlık veya adresini alma

Mesaj gönderen Lord_Ares »

Merhaba
Google choreme ile bir çok internet sayfası açtığınızı düşünün. Yapmak istediğim açılan bu her tabı gezerek elimdeki adres ile karşılaştırmak eğer elimdeki adres ile aynı ise o sayfayı aktif etmek ve o sayfaya ait handle değerlerini almak istiyorum. Bunun için FindWindowA fonksiyonunu kullanıyorum fakat aradığım sayfa aktif değilse bulamıyor. Bu fonksiyon choremda sadece aktif yani seçili ise işe yarıyor. Başka bir tab açıksa bulamıyor. Bu konuda yardımcı olursanız sevinirim.
Teşekkürler
En son Lord_Ares tarafından 30 Oca 2015 06:31 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

choreme açık sayfaların başlık veya adres alma

Mesaj gönderen Lord_Ares »

Arkadaş kısmen çözümü buldum ihtiyacı olan arkadaşlar için fonksiyon şu şekilde. Açık pencerelerin captionlarında aradığınız yazıyı bu fonksiyona verirseniz size o pencerenin handle numarasını verir. Fakat yukarıda dediğim gibi kısmen çalışıyor. Ekranınızda tarayıcınız hariç tüm pencereleri simge durumuna aldığımızda pencereyi buluyor fakat notpad gibi başka pencereler açıksa bulamıyor. Kullanırken tarayıcınız hariç tüm pencereleri simge durumuna alın. Bunu düzeltebilirsem paylaşırım.

( Google choreme ve explorerda çalışıyor.)

Kod: Tümünü seç

function FindWindowByTitle(WindowTitle: string): Hwnd;
var
  NextHandle: Hwnd;
  NextTitle: array[0..260] of char;
begin
  // Get the first window
  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  while NextHandle > 0 do
  begin
    // retrieve its text
    GetWindowText(NextHandle, NextTitle, 255);
    if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
    begin
      Result := NextHandle;
      Exit;
    end
    else
      // Get the next window
      NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  end;
  Result := 0;
end;


Kullanım şekli

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
pencere_numarası: Hwnd;

begin
pencere_numarası:=FindWindowByTitle('google') ;
  if pencere_numarası <> 0 then
  begin
  ShowWindow(pencere_numarası,SW_SHOW); /// pencere minimize ise göster
  SetForegroundWindow(pencere_numarası);//pencereyi öne plana getir;
   end else ShowMessage(Aradığınız pencere yok');
end;
Cevapla