2015-07-21 53 views
0

我知道如何防止用户在WP8.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。

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

回答

0

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

+0

谢谢@Peter。怎么样与Windows 10相同的问题任何方式来检测屏幕捕获已发生? –

+0

Storage API支持更好,但不是很有用。没有新的API可以提供我在10年以前知道的通知。 –