Créer des processus.

Créer des processus.

CreateProcess

Voir version :

Pas de dépendances

Télécharger :

#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;
}



Commentaires

	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.