6
votes

C / C ++ / C # Force Force pour être sur le dessus

est-ce qu'il y a un moyen de forcer une autre fenêtre sur le dessus? pas la fenêtre de l'application, mais un autre un, exécuté déjà sur le système. (Windows, C / C ++ / C #)


0 commentaires

4 Réponses :



10
votes
SetWindowPos(that_window_handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
BringWindowToTop moves the window to the top of the Z-order (for now) but does not make it a topmost window.

2 commentaires

Pouvez-vous donner un exemple s'il vous plaît?


@Levo: il suffit de remplacer la poignée de la fenêtre que vous souhaitez sur la place de que_window_handle dans l'extrait cippet ci-dessus.



3
votes

Apportwindowtotop () n'a aucun effet si vous souhaitez apporter une fenêtre d'applications par derrière (ou minimisée) à l'avant. Le code suivant est-ce que cette affaire est fiable:

ShowWindow(hwnd, SW_MINIMIZE);
ShowWindow(hwnd, SW_RESTORE);


2 commentaires

Il est lent dans Win XP.


Travailler comme un charme!



0
votes
BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam) {
     wchar_t buff[255];

    if (IsWindowVisible(hWnd)) {
        GetWindowText(hWnd, (LPWSTR) buff, 254);
        //wprintf(L"%s\n", buff);
        wstring ws = buff;
        if (ws.find(L"Firefox") != ws.npos)
        {
            ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
        }
    }
    return TRUE;
}

int main(){
    BOOL enumeratingWindowsSucceeded = ::EnumWindows( EnumWindowsProc, NULL );
}

0 commentaires