bonjour,
je veux exécuter mon programme plusieurs fois, il y a donc plusieurs instances de mon programme qui tournent à la fois, et qui s'envoient des messages.
je veux pouvoir déterminer une instance (un processus), parmi l'ensemble des processus portant le même nom, et différent du processus qui exécute le code.
voici mon code:
HANDLE hSnapShot;
PROCESSENTRY32 uProcess;
bool r;
short PID = 0;
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
uProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32);
r = Process32First(hSnapShot, &uProcess);//on récupére le 1er processus
do
{
if (strstr(uProcess.szExeFile,"monProcessus") ) //on a trouvé le processus
{
PID = (short) uProcess.th32ProcessID; //on récupére le PID du processus
// On retrouve le HWND correspondant au processus trouvé
HWND hWindowRecherche = NULL;
DWORD test_pid,test_thread_id;
HWND hWindow = ::FindWindow(NULL,NULL);
do
{
if(::GetParent(hWindow) == NULL)
{
test_thread_id = ::GetWindowThreadProcessId(hWindow,&test_pid);
if(test_pid == PID)
{
hWindowRecherche = hWindow;
if ( PID != 0 )
{
"j'envoie coucou à mon processus"
}
}
}
hWindow = ::GetWindow(hWindow, GW_HWNDNEXT);
} while (hWindow);
}
r = Process32Next(hSnapShot, &uProcess); //on passe au processus suivant dans la liste
} while ( r );
à ce niveau, je peux interagir avec tous les processus portant le nom "monProcessus", et donc avec moi même....
moi je veux pouvoir interagir avec seulement les autres processus "monProcessus", mais pas avec moi...
Je vous rappelle que je lance plusieurs instances de mon code.
merci
Partager