Question

J'ai une DLL que je veux jouer des sons en utilisant Direct Sound. Pour jouer des sons, j'ai besoin HWND de l'exécutable. Je n'ai pas HWND de l'exécutable qui se charge de la DLL. Comment puis-je obtenir que dans la DLL sans passer depuis l'exécutable?

Était-ce utile?

La solution

Vous pouvez utiliser GetCurrentProcessId pour obtenir le processus actuel Id.

Vous pouvez ensuite appeler EnumWindows et vérifier chaque fenêtre avec GetWindowThreadProcessId pour trouver une fenêtre associée à votre processus.

Cependant, une option plus facile peut-être juste de générer votre propre fenêtre. Vous pouvez créer une fenêtre de pixels 1x1 qui ne sont pas visibles, et l'utiliser avec Direct Sound.

Ceci a l'avantage de travailler même si votre processus d'appel ne dispose pas d'une fenêtre utilisable (ou supprime les poignées de fenêtre régulièrement).

Autres conseils

GetGUIThreadInfo sur le thread principal . Cela vous obtient un tas de HWNDs. Si vous avez besoin d'un HWND niveau supérieur, choisissez une valide (pas toutes les valeurs peuvent être remplies) et trouver son ancêtre de niveau supérieur avec GetAncestor(GA_ROOT).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top