Come sapere quando EnumWindows termina il proprio elenco di finestre? Perché EnumWindows riceve una funzione di callback come parametro e continua a chiamarla fino a quando non vengono elencate altre finestre.Come sapere quando EnumWindows termina il suo elenco di finestre?
5
A
risposta
9
EnumWindows()
blocchi mentre è in corso l'enumerazione. Quando EnumWindows()
termina l'enumerazione attraverso le finestre, restituisce un BOOL
.
Il seguente frammento di codice:
#include <windows.h>
#include <cstdio>
BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lparam)
{
int& i = *(reinterpret_cast<int*>(lparam));
++i;
char title[256];
::GetWindowText(hwnd, title, sizeof(title));
::printf("Window #%d (%x): %s\n", i, hwnd, title);
return TRUE;
}
int main()
{
int i = 0;
::printf("Starting EnumWindows()\n");
::EnumWindows(&MyEnumWindowsProc, reinterpret_cast<LPARAM>(&i));
::printf("EnumWindows() ended\n");
return 0;
}
mi dà un output come questo:
Starting EnumWindows() Window #1 (<hwnd>): <title> Window #2 (<hwnd>): <title> Window #3 (<hwnd>): <title> <and so on...> EnumWindows() ended
Così EnumWindows()
enumera sicuramente in modo sincrono.
Problemi correlati
- 1. Youtube + Selenium (Python) - Come sapere quando termina il video?
- 2. Perché EnumWindows restituisce più finestre di quanto mi aspettassi?
- 3. Come sapere quando un'attività termina un passaggio di layout?
- 4. iOS - Come sapere quando NSOperationQueue termina l'elaborazione di alcune operazioni?
- 5. Come posso rilevare quando vengono aperte nuove finestre e/o ottenere un elenco di finestre aperte?
- 6. come sapere se una stringa $ termina con ','?
- 7. Delphi XE2 EnumWindows non funziona correttamente
- 8. Come rilevare quando termina l'applicazione?
- 9. Come fa Java a sapere quando un metodo void ha completato il suo corpo del metodo?
- 10. In .NET, cosa succede a un thread quando termina il suo compito? Devo gestirlo?
- 11. Come sapere quando scadrà il cookie OWIN?
- 12. Come sapere quando il TTS è finito?
- 13. Come cancellare gli elementi di elenco a discesa esistenti quando il suo contenuto cambia?
- 14. ottenere un elenco utilizzando il suo ID
- 15. L'heap viene liberato quando il programma termina?
- 16. Windows: come ottenere un elenco di tutte le finestre visibili?
- 17. Linux: come ottenere un elenco di tutte le finestre visibili
- 18. Come faccio qualcosa quando termina un'animazione?
- 19. Come scoprire quando il processo termina in Linux?
- 20. Come eliminare l'oggetto boost boost quando termina il thread stesso?
- 21. python: come terminare un thread quando il programma principale termina
- 22. Come sapere quando il viewpager ha finito di caricare
- 23. Sapere quando il modulo figlio è chiuso
- 24. Come rilevare quando l'animazione termina in UITableViewCell deselezionare fila
- 25. Il programma termina bruscamente anche nel debugger - come è successo?
- 26. sapere quando chiamare persiste
- 27. Come sapere quando una serie di attività RabbitMQ è completa?
- 28. Come sapere quando ci sono troppi messaggi di registrazione?
- 29. Android: come posso sapere quando gridview ha raggiunto il fondo?
- 30. Come sapere quando il dispositivo iOS è collegato?
come ho provato, non blocca, solo dopo circa 1-> 2 secondi quindi l'elenco delle finestre è completamente elencato, qualsiasi altra idea? – jondinham
@Paul: deve esserci un errore. Puoi pubblicare il codice che usa 'EnumWindows()'? L'ho anche testato e blocca e ritorna solo dopo aver terminato di enumerare attraverso le finestre. –
ho controllato di nuovo, mio errore. blocca. :) – jondinham