0

我正在开发一个 C++ Windows Store DirectX 应用程序,并且我正在尝试每隔一段时间将屏幕截图保存到磁盘。

我正在使用DirectX 工具包(DirectXTK) 和返回 HRESULT 的函数 SaveDDSTextureToFile。

问题是返回的 HRESULT 总是:

E_ACCESSDENIED 一般访问被拒绝错误。

我认为这是一些权限/功能的事情(它是一个 Windows 商店应用程序),但我找不到我需要请求权限才能将文件保存到磁盘的内容。

DirectX ToolKit 说它适用于 Windows 商店应用程序以及桌面应用程序,但我也找不到关于它们的 codeplex 的任何信息。

有谁知道我需要获得许可才能进行此操作?

谢谢你的时间。

4

2 回答 2

1

Windows 应用商店应用是沙盒化的,权限比桌面应用少,尤其是在文件访问方面。默认情况下,应用程序只能访问本地存储目录,这在 shell 中是不容易访问的。如果要保存到图片或文档库,则需要在包清单中指定此访问权限。此外,您将需要使用 WinRT 文件 API 来编写 DDS 文件。为此,请使用SaveDDSTextureToMemory,然后将生成的原始 DDS 数据写入StorageFile. 查看文件访问示例,了解有关将此数据写入文件所涉及的 WinRT API 的更多信息。

于 2013-09-07T00:19:07.517 回答
0

我设法找到了一种方法来做到这一点。基本上正如 MooseBoys 所说,您无法保存到任何地方,因为该应用程序是沙盒的。

但是,您可以在 AppData 中保存到应用程序包的 TempState 文件夹,这就是我所需要的,因为我正在使用此功能进行调试。

所以我打电话的是:

DirectX::SaveWICTextureToFile(deviceContext, texture2D, GUID_ContainerFormatPng, L"C:\\Users\\USERNAME\\AppData\\Local\\Packages\\PACKAGENAME\\TempState\\test.png");

这很好用。

于 2013-09-11T13:08:10.780 回答