Obviamente deberás modificar la función para adaptarse a lo que necesitas...
La compilación condicional deberá tener en cuenta las librerías, además del código.
Algo así:
Código Delphi
[-]
uses {$IFDEF WIN32}WinApi{$ENDIF}
{$IFDEF LINUX}LinApi{$ENDIF} ;
{$IFDEF WIN32}
function RunAndWait(Handle: THandle; Ejecutable, Argumentos: string; const RunDirectory: PChar = nil; const Visibilidad: integer = SW_SHOWNORMAL; MensajeSiCorrecto: boolean = True): DWORD;
...
{$ENDIF}
{$IFDEF LINUX}
function RunAndWait(Handle: THandle; Ejecutable, Argumentos: string; const RunDirectory: PChar = nil; const Visibilidad: integer = SW_SHOWNORMAL; MensajeSiCorrecto: boolean = True): DWORD;
...
{$ENDIF} ;