1

アプリで次の関数を使用して、MediaCapture クラスを使用して写真をキャプチャし、クリップボードにコピーしています。

        async private void UseCamera()
        {
        var _ImageFormat = ImageEncodingProperties.CreatePng();
        var _fileStream = new InMemoryRandomAccessStream();

        try
        {
            await _mediaCapture.InitializeAsync();
        }

        catch (Exception e)
        {
            new Windows.UI.Popups.MessageDialog(e.Message).ShowAsync();
        }

        try
        {
            await _mediaCapture.CapturePhotoToStreamAsync(_ImageFormat, _fileStream);
        }

        catch (Exception e)
        {
            new Windows.UI.Popups.MessageDialog(e.Message).ShowAsync();
        }

        var _streamRef = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromStream(_fileStream);
        _dataPackage.SetBitmap(_streamRef);


        Clipboard.SetContent(_dataPackage);
        Clipboard.Flush();

    }

アプリはローカル マシンで正常に動作しています。しかし、シミュレーターで実行しようとすると、次のエラーが表示されます。

「タイプ 'System.UnauthorizedAccessException' の例外が SensorGridCamera.exe で発生しましたが、ユーザー コードで処理されませんでした

追加情報: アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))"

誰でも私を助けることができますか?

4

2 に答える 2

1

わかりましたので、私のために働いたこのことを見つけました:

トリックは、await _mediaCapture.InitializeAsync(); で MediaCaptureInitializationSettings オブジェクトを渡すことでした。メソッドを引数として使用し、それを行う前に、オブジェクトの PhotoCaptureSource プロパティを VideoPreview に設定してください。

            MediaCaptureInitializationSettings _cameraSettings1 = new MediaCaptureInitializationSettings();
            _cameraSettings1.PhotoCaptureSource = PhotoCaptureSource.VideoPreview;
            await _mediaCapture.InitializeAsync(_cameraSettings1);

それが役に立てば幸い。乾杯 :)

于 2013-04-16T19:58:27.723 に答える
1

これはアクセス許可の問題のようで、管理者として実行する必要があります。プロジェクトにアプリケーション マニフェストを追加します。次に、これに変更<requestedExecutionLevel level="asInvoker" uiAccess="false" />する<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> と、アプリケーションは実行時に管理者として実行するように要求されます。

于 2013-04-15T17:05:59.580 に答える