如何将UWP应用注册为截图及摄像头快照的共享接收方
如何将自定义UWP应用注册为Windows截图/摄像头捕获的共享接收方
完全可以实现,只需通过应用清单配置+少量代码逻辑就能完成,以下是具体步骤:
一、配置应用清单(Package.appxmanifest)
这是让应用出现在共享列表的核心步骤:
- 打开Package.appxmanifest的代码视图,在
<Application>节点内添加共享目标扩展声明:
<Extensions> <uap:Extension Category="windows.shareTarget"> <uap:ShareTarget> <uap:SupportedFileTypes> <!-- 按需添加支持的图片格式 --> <uap:FileType>.png</uap:FileType> <uap:FileType>.jpg</uap:FileType> <uap:FileType>.jpeg</uap:FileType> <uap:FileType>.bmp</uap:FileType> </uap:SupportedFileTypes> <!-- 适配截图/摄像头捕获的两种共享数据格式 --> <uap:DataFormat>Bitmap</uap:DataFormat> <uap:DataFormat>StorageItems</uap:DataFormat> </uap:ShareTarget> </uap:Extension> </Extensions>
- 若需要读取共享的图片文件,在
<Capabilities>节点添加图片库访问权限:
<Capability Name="picturesLibrary" />
二、实现共享内容接收逻辑
配置完成后,需要在应用中处理传入的共享内容:
在App.xaml.cs中重写OnShareTargetActivated方法,处理不同类型的共享数据:
protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { var shareOperation = args.ShareOperation; // 处理Bitmap类型的共享内容(比如WIN+SHIFT+S的截图) if (shareOperation.Data.Contains(StandardDataFormats.Bitmap)) { shareOperation.Data.GetBitmapAsync().ContinueWith(async task => { using var bitmap = task.Result; using var stream = await bitmap.OpenReadAsync(); // 在这里添加你的图片处理逻辑:显示、保存、编辑等 shareOperation.ReportCompleted(); }); } // 处理文件类型的共享内容(比如摄像头拍摄的照片文件) else if (shareOperation.Data.Contains(StandardDataFormats.StorageItems)) { shareOperation.Data.GetStorageItemsAsync().ContinueWith(async task => { var items = task.Result; foreach (var item in items) { if (item is StorageFile file && file.FileType is ".png" or ".jpg" or ".jpeg" or ".bmp") { using var stream = await file.OpenReadAsync(); // 添加你的图片处理逻辑 } } shareOperation.ReportCompleted(); }); } // 导航到专门处理共享内容的页面(可选) var rootFrame = Window.Current.Content as Frame ?? new Frame(); rootFrame.Navigate(typeof(ShareReceivePage), shareOperation); Window.Current.Content = rootFrame; Window.Current.Activate(); }
三、验证效果
部署应用后,测试两种场景:
- 按下
SHIFT + WIN + S截取截图,点击预览弹窗的「共享」按钮,你的UWP应用会出现在共享列表中 - 使用摄像头应用拍摄照片后,选择「共享」选项,同样能看到你的应用
内容的提问来源于stack exchange,提问作者Cristiano Ghersi
相关产品推荐
相关产品推荐

