WebCamsを処理するアプリケーションをコーディングしています。avicap32.dllライブラリを使用する必要があります(これは外部制約です)。したがって、ここでは、このライブラリのいくつかのextern関数(型をマーシャリングする必要があります)とuser32(WindowsMessagesを送信する)を使用しています。そして、私はインターネットの半分を掘り起こしましたが、接続されているすべてのWebCamデバイスのリストを取得する方法を見つけることができませんでしたか?
もちろん、私は機能を完全に知っています:
[DllImport(avicap32dll)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool capGetDriverDescription(
short driverIndex,
StringBuilder name, int nameSize,
StringBuilder version, int versionSize);
、しかしそれは私にカムではなくドライバーのリストを与えます!2台のカメラをPCに接続しても、この関数でキャプチャドライバーを1つしか見つけることができません(driverIndexを0から9までチェックします)。両方とも同じキャプチャドライバを使用している必要があります。そのため、Webカメラのリストがないため、どのWebカメラに接続するかを実際に決定することはできません。WindowsMessage WM_CAP_DLG_VIDEOSOURCEがありますが、WebCamに接続する前にビデオソースダイアログが表示されません。