About the only thing you can do is fool the program into thinking its connected to a tty rather than a pipe. That will cause most programs to use line buffering. Look into using a pseudo tty. IPC::Run can help there.
A windows console handle (CONIN$, CONOUT$) is not a pipe handle, it is a character device file handle (TTY handle) to the console input buffer or a console output buffer.