Domanda

Ho una DLL che voglio per riprodurre i suoni con Direct Sound. Al fine di riprodurre i suoni, mi serve l'HWND del file eseguibile. Non ho un HWND del file eseguibile che carica la DLL. Come faccio a ottenere che nella DLL senza passare in dall'eseguibile?

È stato utile?

Soluzione

Si potrebbe utilizzare GetCurrentProcessId per ottenere l'ID di processo in corso.

Si potrebbe quindi chiamare EnumWindows, e verificare ogni finestra con GetWindowThreadProcessId per trovare una finestra associata con il processo.

Tuttavia, l'opzione più semplice potrebbe essere quella di produrre solo il proprio Window. È possibile creare una finestra 1x1 pixel che non è visibile, e utilizzarlo con Direct Sound.

Questo ha il vantaggio di lavorare anche se il processo chiamante non ha una finestra utilizzabile (o elimina le maniglie delle finestre regolarmente).

Altri suggerimenti

GetGUIThreadInfo sul thread principale . In questo modo si ottiene un po 'di HWNDs. Se avete bisogno di un HWND-alto livello, scegliere qualsiasi valida (non tutti i valori possono essere riempiti) e trovare il suo antenato di livello superiore con GetAncestor(GA_ROOT).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top