Prueba usar EnumWindows. Esta función de la API de
Windows, lista todas las ventanas del escritorio, y por cada una llama a la función que tú le indiques pasando su identificador como parámetro.
Un ejemplo:
Código Delphi
[-]
function ProcessWindow(Handle: HWND; Log: TStrings): BOOL; stdcall;
var
ClassName: array[0..255] of Char;
begin
GetClassName(Handle, ClassName, 255);
Log.Add(ClassName);
Result := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.BeginUpdate;
EnumWindows(@ProcessWindow, LParam(Memo1.Lines));
Memo1.Lines.EndUpdate;
end;
El ejemplo coloca en un Memo, los nombres de las clase de las ventanas. Una vez que detectes la clase que te interesa, puedes agregar un condicional a la función que procesa cada ventana (ProcessWindow en el ejemplo):
Código Delphi
[-]
if UpperCase(ClassName) = 'NOTEPAD' then
begin
end;
// Saludos