Pas de dépendances
#include <windows.h> #include <tchar.h> int main() { PROCESS_INFORMATION processInformation; STARTUPINFO startupInfo; memset(&processInformation, 0, sizeof(processInformation)); memset(&startupInfo, 0, sizeof(startupInfo)); startupInfo.cb = sizeof(startupInfo); CreateProcess(_T("C:\\Windows\\system32\\calc.exe"),NULL,NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &startupInfo, &processInformation); WaitForSingleObject( processInformation.hProcess, INFINITE ); CloseHandle( processInformation.hProcess ); CloseHandle( processInformation.hThread ); printf("Fini !\n"); return 0; }
Contrairement à un thread, un processus ne partage pas sa mémoire. Il a sa propre zone de mémoire. C'est un nouveau programme lancé à part entière. Il y a beaucoup de paramètres optionnels. Vous les trouverez ici : http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx Ici, je lance la calculatrice, qui est, chez moi, dans C:\\Windows\\system32\\calc.exe Si besoin, changez le nom. La structure STARTUPINFO passée en paramètre peut contenir diverses informations comme la position de départ ou d'autres options : http://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85).aspx La structure PROCESS_INFORMATION est intéressante, car elle contiendra le HANDLE du processus, ainsi que de son thread principal. Cela sera important si on veut gérer le processus par la suite. En effet, dans le programme, on lance le processus, puis le processus principal s'arrête sur un WaitForSingleObject, dans lequel on passe le Handle du processus. On attend qu'il se termine pour continuer. Notez qu'on pourrait continuer à faire des choses dans le programme principal, pendant que l'autre processus tourne (la calculatrice) A la fin, on termine le processus ainsi que son thread principal avec CloseHandle.