Bonjour,

Je suis actuellement en train de développer une fonctionnalité pour une appli qui permet d'éviter que l'appli s'exécute plusieurs fois sur le poste d'un utilisateur.
J'ai trouvé une portion de code qui récupère la liste des process, que j'ai adapté pour mon besoin.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
bool processExiste(QString nomProcess) {
    unsigned long aProcesses[1024], cbNeeded, cProcesses;
 
    if(!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))
        printf("text01");
 
    cProcesses = cbNeeded / sizeof(unsigned long);
    int count = 0;
    QMap<int, QString> mapProcess;
 
    for(unsigned int i = 0; i < cProcesses; i++) {
        if(aProcesses[i] == 0)
            continue;
 
        HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, aProcesses[i]);
 
        wchar_t buffer[50];
 
        GetModuleBaseName(hProcess, 0, buffer, 50);
 
        CloseHandle(hProcess);
 
        mapProcess[aProcesses[i]] = QString::fromWCharArray(buffer);
        if(QString::fromWCharArray(buffer).contains(nomProcess)) {
            count++;
            // TODO mettre le SetForegroundWindow
        }
    }
 
    return (count >= 2);
}
Je souhaiterai faire en sorte de mettre au premier plan la fenêtre de l'application déjà lancé.
Pour cela j'ai trouvé la fonction SetForegroundWindow(), mon problème est que cette fonction nécessite le handle (HWND) de la fenêtre et non pas du process.
J'ai essayé de voir d'autre fonction pour trouver ce handle mais comme il s'agit de ma première expérience avec l'API Win32 je suis un peu perdu.
Est ce que quelqu'un a une solution pour retrouver le handle de la fenêtre avec le PID ou le handle du process ? Merci d'avance.