@Rafał D: za pewne jest tak, jak pisze @kAzek. Skoro identyczny kod pod różnymi środowiskami dla identycznych warunków poza samym IDE daje w tym przypadku inny rezultat. Zawsze możesz stworzyć sobie formatkę z Memo i Buttonem. Testując poniższym kodem czy na liście okien coś znajdziesz. Tylko za pewne nie znajdziesz.
Kopiuj
function EnumWindowsProc(AHandle : HWND; ALParam : LParam) : BOOL; stdcall
var
ControlName, ControlText : array[0..255] of Char;
begin
Result := True;
GetClassName(AHandle, ControlName, SizeOf(ControlName));
SendMessage(AHandle, WM_GETTEXT, SizeOf(ControlText), Integer(@ControlText));
Form1.Memo1.Lines.Add(Format('$%X %s %s', [AHandle, ControlName, ControlText]))
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
EnumWindows(@EnumWindowsProc, 0);
end;
Jeżeli kombinujesz w ten sposób co opisałeś, aby mieć okno do którego mają docierać jakieś Twoje komunikaty, to zawsze możesz albo wysyłać je z stałą - parametrem HWND_BROADCAST
zamiast uchwytu. Wtedy komunikat "rozejdzie się" po wszystkich, utworzonych oknach głownych w systemie, które mogą go odebrać i obsłużyć. Ewentualnie mozesz też utworzyć przez funkcję CreateWindow(Ex)A/W
ukryte okno, o własnej unikalnej nazwie klasy i nim się posługiwać przy odbiorze późnejszych komunikatów. Więcej opisano na mnóstwie stron go wygooglowania oraz MSDNie.