2

DVDムービー用にCOMに登録されている自動再生イベントハンドラーがあります。

私はC#を使用しており、CodeProjectのこのガイドに従いました:http://www.codeproject.com/KB/system/AutoplayDemo.aspx

DVDムービーが挿入されると、リストにハンドラーが表示され、起動します(デバッグできるように、コード内にDebugger.Break()を追加しました)

私のオブジェクトでは、IDropTargetインターフェースを実装し、Dropイベントが呼び出されます。

ただし、DVDムービーの場合、渡されたIDataObjectに問い合わせることはできません。「AutoplayEnumerated IDList Array」形式でIDataObject.QueryGetDataを呼び出すと、S_OK(0)ではなくint値1が返されます。これは、QueryGetData呼び出しに対して定義された出力値の1つではないようで、完全に途方に暮れています。

自動再生イベントログ(%SystemRoot%\ Autoplay.log)には、次のように記載されています。〜0x000006E0〜[0312] DVDムービー->コンテンツの自動再生なし!

これは、どのDVDドライブがイベントを開始したかがわからないことを意味しますか?当然のことながら、ほとんどのシステムには1つしかありませんが、映画情報を取得するために正しいデバイスに問い合わせたいと思います。

4

1 に答える 1

2

私は行って、VLCがそれをどのように行うかをチェックしました。codeprojectの例のようにCOMオブジェクトを使用する代わりに、exeをレジストリアクションに直接マップします。

次に、アクションコマンドラインで%1置換パラメーターを使用します。これにより、Windowsは自動再生イベントの対象となるドライブを自動的に置換します。

これはDVD再生のはるかに簡単なソリューションです(コードプロジェクトの例では、コンテンツタイプの検出によって検査されたすべてのファイルをキャッチするため、必要な目的とまったく同じではありません)

于 2010-12-19T20:07:48.167 に答える