Nie znam się na Windach. Moge wspomnieć, że odpalanie programów w tle nie działa na tej zasadzie, że ukrywasz okno. Takie programy nazywa się często deamon'ami (w środowisku POSIX) lub serwisami (w środowisku MSWindows).
Windows Services
Z tego co mi wiadomo nie ma za dużo tutoriali na ten temat jeżeli chodzi o Windowsa, możesz odnieść się do dokumentacji API https://msdn.microsoft.com/en-us/library/windows/desktop/ee663297(v=vs.85).aspx, znalazłem też ten artykuł który dość prosto przedstawia temat: https://www.codeproject.com/Articles/499465/Simple-Windows-Service-in-Cplusplus.
`Fork()` i Cygwin
Zawsze możesz użyć środowisko Cygwin które ma implementacje świetnych narzędzi IPC działających podobnie jak na Unixie. Moim zdaniem jest to dużo prostsze rozwiązanie. Podstawowy program używający `fork` może wyglądać tak:
switch (pid = fork()) {
case -1: /* Sprawdź w `man 2 fork`, w sekcji ERRORS */
perror("Fork failed!\n"); /* Wystąpił jakiś błąd z fork'iem */
exit(EXIT_FAILURE); /* Rodzic kończy prace */
case 0: /* Teraz działa dzieckom np. twój demon */
printf ("DZIECKO %d: Zostałem odpalony przez PID %d\n", getpid(), getppid());
default: /* Teraz działa rodzic */
printf ("RODZIC %d: Zostałem odpalony przez PID %d\n", getpid(), getppid());
}
Jeżeli chcesz się w to wgłębić to możesz sprawdzić program (gdzieś z mojego archiwum C) do odpalania drzewka procesów używając tablicy jako struktury: https://gist.github.com/513ry/4d6935b4b64a6662c0b6513cb1f6bf66. Krótko i prosto opisał to beej przy okazju przewodnika pa IPC: https://beej.us/guide/bgipc/pdf/bgipc_USLetter.pdf#%5B%7B%22num%22%3A33%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C64.8%2C727.2%2Cnull%5D.
Dużo odnośników znajdziesz też na wikipedii, czasem dobrze od niej zacząć: https://en.wikipedia.org/wiki/Daemon_(computing).