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();

    }

该应用程序在我的本地计算机上运行良好。但是当我尝试在模拟器上运行它时,我得到了这个错误:

“在 SensorGridCamera.exe 中发生了“System.UnauthorizedAccessException”类型的异常,但未在用户代码中处理

附加信息:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))”

有人可以帮我吗?

4

2 回答 2

1

听起来这是一个权限问题,以管理员身份运行应该修复它。将应用程序清单添加到您的项目中。然后更改<requestedExecutionLevel level="asInvoker" uiAccess="false" /><requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 这将强制您的应用程序在运行时请求以管理员身份运行。

于 2013-04-15T17:05:59.580 回答
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 回答