Вопрос

У меня есть DLL, который я хочу воспроизводить звуки, используя прямой звук. Чтобы воспроизводить звуки, мне нужен HWND исполняемого файла. У меня нет hwnd исполняемого файла, который загружает DLL. Как мне получить это в DLL, не передавая его из исполняемого файла?

Это было полезно?

Решение

Вы могли бы использовать GetCurrentProcessId Чтобы получить текущий идентификатор процесса.

Затем вы можете позвонить Enumwindows и проверить каждое окно с помощью GetWindowThreadProcessId Чтобы найти окно, связанное с вашим процессом.

Тем не менее, более простой вариант может состоять в том, чтобы просто генерировать собственное окно. Вы можете создать окно 1x1 пикселей, которое не видно, и использовать его с прямым звуком.

Это имеет преимущество в работе, даже если у вашего процесса вызова нет удобного окна (или регулярно удаляет окно).

Другие советы

Вызов GetGUIThreadInfo На главной теме. Это дает вам кучу HWND. Если вам нужен HWND верхнего уровня, выберите любой действительный (не все значения могут быть заполнены) и найдите его предка верхнего уровня с GetAncestor(GA_ROOT).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top