Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede paketlenmiş uygulamaların Windows Share özelliğiyle tümleştirilmesi açıklanmaktadır. MSIX ile paketlenmiş uygulamalar paket kimliğine sahiptir ve Paylaşım Hedefi olarak kaydolmaya hazırdır. Paylaş özelliği, kullanıcıların bir uygulamadan diğerine içerik paylaşmasına olanak tanır. Paketlenmiş bir uygulama, uygulama içinde paylaşılan dosyaları almak ve işlemek için Paylaşım Hedefi olarak kaydolacaktır.
Paylaşım Hedefi nedir?
Paylaşım Hedefi, Windows 8'de kullanıma sunulan bir özelliktir ve bir uygulamanın başka bir uygulamadan veri almasına olanak tanır. Hedefi Paylaş, Pano gibi çalışır ancak dinamik içerikle çalışır.
Varsayılan paylaşım hedef kaydının Win32 uygulamalarıyla çalışması için, uygulamanın bir paket kimliğine sahip olması ve ayrıca paylaşım bağımsız değişkenlerini kaynak uygulama tarafından sağlanan dinamik bir nesne olan ShareTargetActivatedEventArgs olarak işlemesi gerekir. Hedef uygulamaya gönderilen statik bir bellek içeriği değildir.
Uyarı
C++ uygulamasında, çalışan uygulamanın paket kimliğine sahip olup olmadığını denetlemek için GetCurrentPackageFullName API'sini kullanın. API, paket kimliğiyle çalışmıyorsa hata kodunu döndürür APPMODEL_ERROR_NO_PACKAGE .
Önkoşullar
ShareTargetActivatedEventArgs'yi desteklemek için uygulamanın Windows 10, sürüm 2004 (derleme 10.0.19041.0) veya üzerini hedeflemesi gerekir. Bu özellik için en düşük hedef sürümdür.
Paylaşım Hedefi Olarak Kaydetme
Uygulamanızda Paylaş sözleşmesini uygulamak için gereken iki adım vardır.
appxmanifest'e paylaşım hedefi uzantısı ekleme
Visual Studio'nun Çözüm Gezgini'nde, çözümünüzde Paketleme projesinin dosyasını açın package.appxmanifest ve paylaşım hedefi uzantısını ekleyin.
<Extensions>
<uap:Extension
Category="windows.shareTarget">
<uap:ShareTarget>
<uap:SupportedFileTypes>
<uap:SupportsAnyFileType />
</uap:SupportedFileTypes>
<uap:DataFormat>Bitmap</uap:DataFormat>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
Uygulamanız tarafından desteklenen veri formatını DataFormat yapılandırmasına ekleyin. Bu durumda, uygulama görüntüleri paylaşmayı desteklediğinden DataFormat olarak ayarlanır Bitmap.
Paylaşım Olayı Bağımsız Değişkenlerini Getir
Windows 10, sürüm 1809'dan itibaren paketlenmiş uygulamalar, başlatma sırasında belirli türdeki uygulama etkinleştirme bilgilerini almak için AppInstance.GetActivatedEventArgs yöntemini çağırabilir. Örneğin, uygulama etkinleştirme hakkında bilgi almak için bu yöntemi çağırabilirsiniz; bir dosya açılarak mı, etkileşimli bir bildirime tıklanarak mı yoksa kayıtlı bir protokol kullanılarak mı tetiklendiği.
Ancak , ShareTargetActivatedEventArgs etkinleştirme bilgileri yalnızca Windows 10, sürüm 2004 ve sonraki sürümlerde desteklenir. Bu nedenle, uygulamanın bu belirli bir minimum sürüme sahip cihazları hedeflemesi gerekir.
Bir Windows Uygulama SDK'sı OnLaunched uygulamasını görmek için Hedefi Paylaş örnek uygulamasındaki yöntemine bakın.
Diğer paketlenmiş uygulamalar için, uygulamanın Main yönteminde AppInstance.GetActivatedEventArgs denetleyin.
public static void Main(string[] cmdArgs)
{
...
if (isRunningWithIdentity())
{
var activationArgs = AppInstance.GetActivatedEventArgs();
if (activationArgs != null)
{
switch (activationArgs.Kind)
{
case ActivationKind.Launch:
HandleLaunch(activationArgs as LaunchActivatedEventArgs);
break;
case ActivationKind.ToastNotification:
HandleToastNotification(activationArgs as ToastNotificationActivatedEventArgs);
break;
case ActivationKind.ShareTarget:
HandleShareAsync(activationArgs as ShareTargetActivatedEventArgs);
break;
default:
HandleLaunch(null);
break;
}
}
}
}
Eksiksiz bir uygulama için Fotoğraf Mağazası Tanıtım uygulamasına bakın.
Paylaşılan dosyaları işleme
Aşağıdaki kod parçacığı, paketlenmiş bir uygulamada paylaşılan dosyaların nasıl işleneceğini gösterir. Kod parçacığı, uygulama önceki örnekte Paylaşım Hedefi olarak etkinleştirildiğinde çağrılan yöntemin bir parçasıdır HandleShareAsync .
static async void HandleShareAsync(ShareTargetActivatedEventArgs args)
{
ShareOperation shareOperation = args.ShareOperation;
shareOperation.ReportStarted();
if (shareOperation.Data.Contains(
Windows.ApplicationModel.DataTransfer.StandardDataFormats.StorageItems))
{
try
{
IReadOnlyList<IStorageItem> items = await shareOperation.Data.GetStorageItemsAsync();
var file = (IStorageFile)items[0];
string path = file.Path;
var image = new ImageFile(path);
image.AddToCache();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
shareOperation.ReportCompleted();
// app launch code
}
Ayrıca bakınız
- Windows Uygulama SDK'sı dağıtımına genel bakış
- İlk WinUI 3 projenizi oluşturma
- UWP'den Windows Uygulama SDK'sına geçiş
- Uygulamayı paketlemenin Avantajları ve Dezavantajları - Dağıtıma genel bakış
- Paketlenmemiş Win32 Uygulamalarının Kimlik, Kayıt ve Etkinleştirme
- Windows Uygulama SDK'sı için Sözleşme Uygulamasını Paylaşma
- Dış Konumla Paketlenmiş Uygulamalar için Anlaşma Uygulamasını Paylaşma
- Paketlenmiş uygulamalar için etkinleştirme bilgilerini alma
- ShareTarget şema referansı
Windows developer