WinExec( DOS PROGRAM ): .Exe conflicts/ caption API / GetmoduleUsage

It is possible to run a DOS program from within Delphi using the code
I list below. 3 points (16-bit):

1. Same Exe file name not allowed !?

I find the DOS exe file name cannot have the same name as the Windows
exe file name! Windows simply decides to run the Windows exe, despite
the path being correctly specified to the DOS exe. Has anyone got any
suggestions to get around this? Solving this would save me a fortune
in time and effort.

2. I want to change the WinExec window caption API?

To anyone who knows more about the API than me (probably most of you),
changing the caption would be great. I think the WinExec() returns the
handle, but I have not seen any API functions to change the caption. I
have used one which retrieves the class name from a window handle, and
can use FindWindow.  The caption cannot be changed in Delphi, as the
Window is not a Delphi window.

3. I see many post references to the GetModuleUsage to make the DOS
program "WAIT". Could someone please explain to me, why is this
necessary? I do not find it necessary in my program. By putting
application.processmessages in the wait loop, the Windows program can
continue executing anyway if the user clicks the mouse in it, I seem
to have missed the point here, could you give me a clue.

Email appreciated. I respond to every email.
Matthew

My Code
------------
var DOSPath: string;
    EXEPointer: Pchar;
    ResultCode: longint;
    MyHandle: THandle;
    ProgHandle : THandle;
begin
   EXEPointer:=strAlloc(256);
   EXEPointer:=StrPCopy(EXEPointer,MyDosProgram);

   DOSPath:= ExtractFilePath(MyDosProgram) ;

   chDir(Copy(DOSPath,1,length(DOSPath)-1));
   ProgHandle:=winexec(EXEPointer,SW_SHOW);

   {caption:=inttostr(ProgHandle);}

   while GetModuleusage(ProgHandle) <> 0 do
      application.processmessages;

   StrDispose(EXEPointer);

end;
---------------------------------------------------------