3

activeX フラッシュ コンポーネントが再生しているオーディオをキャプチャしようとしています。

これを行うには、flash.ocx モジュールを見つけて、waveOutWrite 関数をフックします

これはうまくいくようですが、オーディオが同じスレッドから来て同じ出力デバイスをターゲットにしているように見えるため、内部で waveOutWrite を呼び出すさまざまな activex インスタンスを区別できません。

私の質問は、誰が waveOutWrite を呼び出しているかをどのように区別できるかということです。

モジュールのロードはCOMによって自動的に処理されるため、答えは各activexインスタンスのflash.ocxインスタンスのロードのどこかにあると思います。私が思いついたアイデアの 1 つは、別のプロセスで activex コンポーネントを作成することでした。これにより、waveOutWrite 関数が別のスレッドから呼び出されるようになることが期待されます。ただし、これはこれを達成するためのかなり複雑な方法のようです。

何か案は?

4

1 に答える 1

1

複数の OCX インスタンスが同じスレッドを共有していることに本当に驚きました。私は彼らがユニークなものを手に入れると誓ったかもしれません. したがって、私の以前の[削除された]回答。

お聞きしてもよろしいですか?なぜ一度に複数のサウンドを再生しているのですか? それは絶対に必要ですか?または、他の OCX インスタンスが「ミュート」サウンドを再生している場合は、波形バッファを調べて識別できます。または、 WAVEHDR構造体の他のデータ、おそらくdwUser ...

于 2011-08-04T14:10:10.097 に答える