For unicode it is easiest to change the whole application to utf8 in project->project options -> application and then enabling " use manifest resource" and "Ansi code page is utf-8".
This does require Windows 10+ though (strictly speaking the earliest Windows 10s wouldn't even work, but they will be very rare).
You can also enable "long path awareness" here to avoid trouble with paths longer than 260 chars.
As for the windows, runcommand has variants with options and by passing ponoconsole , you can hide the window.
runcommand('cmd.exe',['/c','copy ..\genxtest.pp ..\genxtest2.pp'],s,[pnoconsole]); // does not allocate a full console. Ok for most programs
or
runcommand('cmd.exe',['/c','copy ..\genxtest.pp ..\genxtest2.pp'],s,[],[swohide]); // does allocate, but hides the window. Better for programs that e.g. uses color or cursor position in the console.