Getting the handle of a Window containing a DOS box

Question:

How can I get the handle of the Window containing a DOS box or other console mode application?

Answer:

The following example demonstrates using the Windows API function FindWindow() to retrieve the handle of a console mode application. Note that the WndClass of a console window is different under Windows 95 and Window NT, and the title of the Window may contain a full path name under Windows NT.

Example:

procedure TForm1.Button1Click(Sender: TObject);

var

  info : TOSVersionInfo;

  ClassName : string;

  Title : string;

begin

 {See if we're running on Win95 or NT.}

  info.dwOSVersionInfoSize := sizeof(info);

  GetVersionEx(info);

  if (info.dwPlatformId = VER_PLATFORM_WIN32_NT) then begin

  ClassName := 'ConsoleWindowClass';

  Title := 'Command Prompt';

  end else begin

  ClassName := 'tty';

  Title := 'MS-DOS Prompt';

  end;

  ShowMessage(IntToStr(FindWindow(PChar(ClassName), PChar(Title))));

end;