Fonction RegisterShellHookWindow (winuser.h)
[Cette fonction n’est pas destinée à une utilisation générale. Il peut être modifié ou indisponible dans les versions ultérieures de Windows.]
Inscrit une fenêtre Shell spécifiée pour recevoir certains messages pour les événements ou notifications utiles aux applications Shell.
Les messages d’événement reçus sont uniquement ceux envoyés à la fenêtre Shell associée au bureau de la fenêtre spécifiée. La plupart des messages sont identiques à ceux qui peuvent être reçus après avoir appelé la fonction SetWindowsHookEx et spécifié WH_SHELL pour le type de hook. La différence avec RegisterShellHookWindow est que les messages sont reçus via le WindowProc de la fenêtre spécifiée et non par le biais d’une procédure de rappel.
Syntaxe
BOOL RegisterShellHookWindow(
[in] HWND hwnd
);
Paramètres
[in] hwnd
Type : HWND
Handle dans la fenêtre pour inscrire les messages de hook shell.
Valeur retournée
Type : BOOL
TRUE si la fonction réussit ; sinon, FALSE.
Remarques
Comme pour les messages de fenêtre normaux, le deuxième paramètre de la procédure de fenêtre identifie le message en tant que WM_SHELLHOOKMESSAGE. Toutefois, pour ces messages de hook Shell, la valeur du message n’est pas une constante prédéfinie comme d’autres ID de message, tels que WM_COMMAND. La valeur doit être obtenue dynamiquement à l’aide d’un appel à RegisterWindowMessage , comme indiqué ici :
RegisterWindowMessage(TEXT("SHELLHOOK"));
Cela empêche la gestion de ces messages à l’aide d’une instruction switch traditionnelle qui nécessite des valeurs d’ID connues au moment de la compilation. Pour gérer les messages de hook Shell, la pratique normale consiste à coder une instruction If dans la section par défaut de votre instruction switch, puis à gérer le message si la valeur de l’ID de message est identique à la valeur obtenue à partir de l’appel RegisterWindowMessage .
Le tableau suivant décrit les valeurs des paramètres wParam et lParam passées à la procédure de fenêtre pour les messages de hook Shell.
wParam | lParam |
---|---|
HSHELL_GETMINRECT | Pointeur vers une structure SHELLHOOKINFO . |
HSHELL_WINDOWACTIVATED | Handle de la fenêtre activée. |
HSHELL_RUDEAPPACTIVATED | Handle de la fenêtre activée. |
HSHELL_WINDOWREPLACING | Handle de la fenêtre qui remplace la fenêtre de niveau supérieur. |
HSHELL_WINDOWREPLACED | Handle de la fenêtre en cours de remplacement. |
HSHELL_WINDOWCREATED | Handle de la fenêtre en cours de création. |
HSHELL_WINDOWDESTROYED | Handle de la fenêtre de niveau supérieur en cours de destruction. |
HSHELL_ACTIVATESHELLWINDOW | Non utilisé. |
HSHELL_TASKMAN | Peut être ignoré. |
HSHELL_REDRAW | Poignée de la fenêtre qui doit être redessinée. |
HSHELL_FLASH | Poignée de la fenêtre qui doit être flashée. |
HSHELL_ENDTASK | Handle de la fenêtre qui doit être forcé à quitter. |
HSHELL_APPCOMMAND | APPCOMMAND qui n’a pas été pris en charge par l’application ou d’autres hooks. Consultez WM_APPCOMMAND et utilisez la macro GET_APPCOMMAND_LPARAM pour récupérer ce paramètre. |
HSHELL_MONITORCHANGED | Handle de la fenêtre qui s’est déplacée vers un autre moniteur. |
Cette fonction n’a pas été incluse dans les bibliothèques et en-têtes du KIT de développement logiciel (SDK) avant Windows XP avec Service Pack 1 (SP1) et Windows Server 2003. Si vous n’avez pas de fichier d’en-tête et de bibliothèque d’importation pour cette fonction, vous pouvez appeler la fonction en utilisant LoadLibrary et GetProcAddress.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Voir aussi
Conceptuel
Autres ressources
Référence