Frage

Ich habe eine DLL, die ich mit direktem Sound Sound spielen möchte. Um Sounds zu spielen, brauche ich den HWND der ausführbaren Datei. Ich habe kein HWND der ausführbaren Datei, das die DLL lädt. Wie bekomme ich das in die DLL, ohne es aus der ausführbaren Datei einzugeben?

War es hilfreich?

Lösung

Du könntest benutzen GetCurrentProcessid Um die aktuelle Prozess -ID zu erhalten.

Sie können dann Enumwindows anrufen und jedes Fenster mit überprüfen GetwindowthreadProcessid um ein Fenster zu finden, das mit Ihrem Prozess verknüpft ist.

Eine einfachere Option könnte jedoch sein, nur Ihr eigenes Fenster zu generieren. Sie können ein 1x1 -Pixel -Fenster erstellen, das nicht sichtbar ist, und es mit direktem Ton verwenden.

Dies hat den Vorteil, auch wenn Ihr Anrufprozess kein nutzbares Fenster enthält (oder regelmäßig Fensterverhandlungen löscht).

Andere Tipps

Anruf GetGUIThreadInfo auf dem Hauptfaden. Dies bringt Ihnen ein paar HWNDS. Wenn Sie einen HWND auf höchstem Niveau benötigen, wählen Sie eine gültige Auswahl (nicht alle Werte können gefüllt werden) und finden Sie den obersten Vorfahren mit der höchsten Ebene mit GetAncestor(GA_ROOT).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top