WP8.1发生检测屏幕捕获

时间:2015-07-21 17:08:23

标签: windows-phone-8.1

我知道如何防止用户在WP8.1上执行屏幕捕获现在我想允许屏幕捕获并跟踪谁这样做。

这是我到目前为止所尝试过的。

public async Task StartScreenshotDetection()
{
    try
    {
        var picturesLibrary = Windows.Storage.KnownFolders.PicturesLibrary;
        string picsPath = picturesLibrary.Path;

        StorageFolder screenshotsLibrary = await picturesLibrary.GetFolderAsync("Screenshots");
        String[] types = { ".png" };
        var options = new Windows.Storage.Search.QueryOptions(Windows.Storage.Search.CommonFileQuery.DefaultQuery, types);

        if (screenshotsLibrary.AreQueryOptionsSupported(options))
        {
            var query = screenshotsLibrary.CreateFileQueryWithOptions(options);

            query.ContentsChanged += QueryContentsChanged; //subscription

            var throwawayResult = await query.GetFilesAsync(); // needed to get events to fire

            int a = 1;
        }
    }
    catch (Exception ex)
    {
        int b = 1;
    }
}

void QueryContentsChanged(Windows.Storage.Search.IStorageQueryResultBase sender, object args)
{
    var a = 1;
    // handle changes
}

我遇到的问题是创建一个新的QueryOptions会抛出未实现的异常。文档似乎暗示支持WP8.1。

还有另一种检测屏幕截图的方法吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Windows Phone 8.x具有查询API的非常基本的实现,并且不支持更改通知。无法知道捕获已经发生。即使查询API有效,它也可能不是一个好的解决方案,因为还有其他原因导致图片显示在那里(例如,从OneDrive同步)会触发您的事件处理程序。