19 Temmuz 2014 Cumartesi

Delphi Ekrandaki bütün pencereleri listeleme

Merhabalar,

Zaman zaman lazım olup kaybettiğim bir kod parçasıdır kaybolmaması için buraya yazıyorum.

Amacı o an ekranda açılan olan uygulamaların Başlık bilgilerini "TStrings" içerisine aktarmasıdır.


procedure GetDesktopWindows(List: TStrings);
var
  hDesktop,
  hWindow: Hwnd;
  Buffer: array[0..255] of char;
begin
  hDesktop := GetDeskTopWindow;
  hWindow := GetWindow(hDesktop, GW_CHILD);
  while hWindow <> 0 do begin
    GetWindowText(hWindow, Buffer, 255);
    if (Buffer <> '') and (IsWindowVisible(hWindow) > False) then
      List.Add(Buffer);
    hWindow := GetWindow(hWindow, GW_HWNDNEXT);
  end;
end;


//Kullanımı

var
  tmp: TStringList;
begin
  try
    tmp := TStringList.Create;
    GetDesktopWindows(tmp);// tmp Stringlisti içerisine ekranı açık olan uygulamaların başlıklarını aldık
  finally
    FreeAndNil(tmp);
  end;