Aracılığıyla paylaş


Paketlenmiş uygulamaları Windows Share ile tümleştirme

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