Existe-t-il une méthode Win32 API pour obtenir une énumération de toutes les fenêtres ouvertes? On dirait qu'il ne doit tout simplement pas savoir où commencer à chercher.Énumérer toutes les poignées de fenêtre sur le bureau
2
A
Répondre
5
EnumWindows() est pour cela. Vous l'appelez et fournissez un rappel. Il appelle le rappel pour chaque fenêtre trouvée et transmet un handle à cette fenêtre.
Vous pouvez ensuite utiliser la poignée pour interroger les paramètres de la fenêtre et décider si cela vous intéresse ou si vous souhaitez effectuer une action avec celle-ci.
2
3
Vous voulez utiliser la fonction EnumDesktopWindows dans user32.dll.
Voici un code C# pour vous diriger vers les bons appels d'API. Je ne suis pas sûr de ce que cela donnerait en C, mais vous avez l'idée.
[DllImport("user32.dll")]
private static extern int EnumDesktopWindows(IntPtr hDesktop, EnumWindowsProc ewp, int lParam);
0
je me suis dit un exemple pourrait jeter plus de lumière sur le processus
#include <windows.h>
BOOL CALLBACK printVisibleWindows(HWND wnd, LPARAM lParam)
{
if(!IsWindowVisible(wnd))return 1;
int length = GetWindowTextLength(wnd);
if(!length)return 1;
length++;
TCHAR *buffer = (TCHAR*)malloc(length);
GetWindowText(wnd, buffer, length);
printf("%p %s\n", wnd, buffer);
free(buffer);
return 1;
}
int main()
{
DWORD dwThreadId = GetCurrentThreadId();
HDESK hDesktop = GetThreadDesktop(dwThreadId);
EnumDesktopWindows(hDesktop, printVisibleWindows, 0);
return 0;
}
Questions connexes
- 1. Comment énumérer toutes les classes avec l'attribut de classe personnalisée?
- 2. dessin sous les icônes sur le bureau
- 3. Comment accéder à toutes les fenêtres ouvertes sur le bureau en utilisant Cocoa?
- 4. Sur Windows XP, comment énumérer toutes les fenêtres affichées par le système (C#)
- 5. Énumérer les partages réseau Windows et toutes les autorisations personnalisées sur ou à l'intérieur de
- 6. Comment énumérer toutes les variables définies dans un script groovy
- 7. Énumérer toutes les «sessions» audio Vista/7, telles qu'affichées dans le mélangeur de volume
- 8. Énumérer les fonctions DLL?
- 9. Comment remplacer le bureau Windows avec ma propre fenêtre?
- 10. Formulaire transparent sur le bureau
- 11. Wpf - centrage sur le bureau principal
- 12. Le bon type pour les poignées dans les interfaces C
- 13. Énumérer les arbres de recherche
- 14. Accès aux poignées de fenêtres externes
- 15. Java: Comptabilisation des barres de tâches/menubars/etc en plaçant une fenêtre sur le bureau?
- 16. Comment masquer les poignées dans le widget QSplitter?
- 17. Firefox - designMode: désactive le redimensionnement des poignées
- 18. Comment énumérer les disques durs
- 19. Application de bâton au bureau sur Vista
- 20. Boucle sur toutes les variables de la fenêtre [global] en javascript. IE compatible?
- 21. Réflexions sur l'utilisation de Silverlight dans les applications de bureau?
- 22. Existe-t-il une méthode .NET pour énumérer toutes les imprimantes réseau disponibles?
- 23. sql server énumérer les variables de session en cours
- 24. Forcer le ratio de la fenêtre contextuelle sur le redimensionnement
- 25. Dessin sur toutes les fenêtres sur plusieurs moniteurs
- 26. énumérer les processus et leurs connexions
- 27. Obtenir Outlook Sur le drapeau de bureau avec .NET
- 28. Extensibilité Visual Studio, Comment énumérer les projets dans une solution?
- 29. Comment lister toutes les imprimantes sur le réseau?
- 30. Identification des poignées de processus et des verrous sur les fichiers du code managé
pense que je aurais dû deviner que * nom *. Merci! – JustJeff