I'm intrigued to the use of this lol
Anyway, got me curious so whipped the code below (based on debug.simba functions). It matches your need to display an Image and multiple lines of Texts in a pop up window that will pop up even if Simba isn't the currently active window. I don't mess around with this stuff much so I'm not sure there's a procedure to close the debug window (read edit), but there's not one to close a message window either, you need to click a button so it's the same with this instead you click the debug window 'x' to close.
Function takes 2 params. First one is the path to your image file. Second is string array where each element is a new line. I've tied it to call when the 'Delete' key is pressed, remap this however you please or change its invocation entirely. If you minimise Simba, only the debug window should display without bringing the whole of Simba to front.
Edit: Added a procedure that can close the debug (works on Windows), currently calls after 1 second of window being up. Be warned it'll actually just close the current active window, which will be the debug window provided user interaction hasn't changed it within that 1 second. Decide its usage for yourself. You can create a Simba procedure to close the debug form in your own custom Simba build, source is on github.
Edit 2: @Treestump found a FindAndSetTarget function laying around. Debug window will be activated before Alt+F4. There's got to be a cleaner way of doing this lol but I'm too tired to know wtf it is. The absolute cleanest solution is as said above, adding your own function in your own Simba build, so if this is something you'll be using a lot and need to rely on, then that's the route.
Simba Code:
function FindAndSetTarget(TitlePrefix: String): Boolean;
var
T: TSysProcArr;
I: Integer;
begin
T:= GetProcesses();
for I := 0 to high(T) do
if ExecRegExpr('^' + TitlePrefix, T[i].Title) then
begin
SetTarget(T[i]);
ActivateClient;
Exit(True);
end;
end;
procedure CloseDebug;
begin
if not FindAndSetTarget('DebugImgForm') then
Exit;
KeyDown(VK_MENU);
PressKey(VK_F4);
KeyUp(VK_MENU);
end;
procedure debugCustom(ImageSrc: String; Texts: TStringArray);
var
Image, ImageW, ImageH, TextW, TextH, OffW, OffH, TextsCount, i: Integer;
TempTPA: TPointArray;
Box : TBox;
begin
try
Image := loadBitmap(ImageSrc);
GetBitmapSize(Image, ImageW, ImageH);
DisplayDebugImgWindow(ImageW, ImageH);
TextsCount := High(Texts);
for i := TextsCount downto 0 do
begin
TempTPA := TPAFromText(Texts[i], 'UpChars', TextW, TextH);
Box := GetTPABounds(TempTPA);
OffW := (ImageW-TextW) shr 1;
OffH := (ImageH-TextH)-((TextsCount-i)*TextH); //from bottom
//OffH := (TextsCount-i)*TextH; //from top
OffsetTPA(TempTPA,Point(OffW, OffH));
DrawTPABitmap(Image, TempTPA, 255);
end;
DrawBitmapDebugImg(Image);
FreeBitmap(Image);
except
Writeln('Error in debug');
end;
end;
begin
repeat
while not isKeyDown(VK_DELETE) do
Wait(100);
debugCustom('test.png', ['test','check','texty','stuff']);
Wait(1000);
closeDebug;
until(false);
end.