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.
Birçok uygulama, kullanıcıların verileri fareyle sürükleyip bırakarak veya Pano kullanarak başka bir uygulamaya veri aktarmasına olanak tanır. Aktarılabilir birçok veri türü arasında dosya veya klasör gibi Shell nesneleri bulunur. Kabuk veri aktarımı iki uygulama arasında gerçekleşebilir, ancak kullanıcılar Kabuk verilerini masaüstüne veya Windows Gezgini'ne de aktarabilir.
Shell dosyaları, en sık aktarılan nesneler olmakla birlikte, Shell veri aktarımı Shell ad alanında bulunançeşitli nesneleri de içerebilir. Örneğin, uygulamanızın bir dosyayı Geri Dönüşüm Kutusu gibi bir sanal klasöre aktarması veya Microsoft olmayan bir ad alanı uzantısından bir nesneyi kabul edilmesi gerekebilir. Bir ad alanı uzantısı uyguluyorsanız, sürükleme kaynağı ve hedef olarak düzgün davranabilmesi gerekir.
Bu belgede uygulamaların Kabuk nesneleriyle sürükle ve bırak ve Pano veri aktarımlarını nasıl uygulayabileceği açıklanır.
- Kabuk Veri Nesnesi
- Kabuk Pano Biçimleri
- Kabuk Veri Aktarımı Senaryolarını İşleme
Sürükle ve Bırak, Kabuk Nesneleriyle Nasıl Çalışır?
Uygulamaların genellikle kullanıcılara Kabuk verilerini aktarmak için bir yol sağlaması gerekir. Bazı örnekler şunlardır:
- Bir dosyayı Windows Gezgini'nden veya masaüstünden sürükleyip bir uygulamaya bırakma.
- Windows Gezgini'nde bir dosyayı Pano'ya kopyalama ve bir uygulamaya yapıştırma.
- Bir uygulamadan Geri Dönüşüm Kutusu'na dosya sürükleme.
Bu ve diğer senaryoların nasıl işleneceğinin ayrıntılı bir tartışması için bkz. Kabuk Veri Aktarımı Senaryolarını İşleme. Bu belgede Shell veri aktarımının ardındaki genel ilkeler ele alınır.
Windows, uygulamaların Shell verilerini aktarması için iki standart yol sağlar:
- Kullanıcı, bir veya birden fazla dosya gibi Kabuk (Shell) verilerini keser veya Pano'ya kopyalar. Diğer uygulama verileri Pano'dan alır.
- Kullanıcı, kaynak uygulamadaki verileri temsil eden bir simgeyi sürükler ve simgeyi hedefin sahip olduğu bir pencereye bırakır.
Her iki durumda da aktarılan veriler birveri nesnesinde yer alır. Veri nesneleri, IDataObject arabirimini kullanıma sunan Bileşen Nesne Modeli (COM) nesneleridir. Şematik olarak, tüm Kabuk veri aktarımlarının izlemesi gereken üç temel adım vardır:
- Kaynak, aktarılacak verileri temsil eden bir veri nesnesi oluşturur.
- Hedef, veri nesnesinin IDataObject arabirimine bir işaretçi alır.
- Hedef, verileri ayıklamak için IDataObject arabirimini çağırır.
Pano ile sürükle ve bırak veri aktarımları arasındaki fark öncelikle IDataObject işaretçisinin kaynaktan hedefe nasıl aktarıldığıdır.
Pano Veri Aktarımları
Pano, Shell verilerini aktarmanın en basit yoludur. Temel prosedür, standart Panoya veri aktarımına benzer. Ancak, bir işaretçiyi verilerin kendisine değil veri nesnesine aktardığınız için standart pano API'sinin yerine OLE pano API'sini kullanmanız gerekir. Aşağıdaki yordamda, Pano ile Shell verilerini aktarmak için OLE pano API'sinin nasıl kullanılacağı özetlenmiştir:
- Veri kaynağı, verileri içerecek bir veri nesnesi oluşturur.
- Veri kaynağı, veri nesnesinin IDataObject arabirimine panoya bir işaretçi yerleştiren OleSetClipboard'i çağırır.
- Veri nesnesinin IDataObject arabirimine işaretçiyi almak için hedef, OleGetClipboard çağırır.
- Hedef, IDataObject::GetData yöntemini çağırarak verileri ayıklar.
- Bazı Kabuk veri aktarımlarında, hedefin veri aktarımının sonucu hakkında veri nesnesine geri bildirim sağlamak için veri nesnesinin IDataObject::SetData yöntemini çağırması gerekebilir. Bu tür bir işlem örneği için bkz. İyileştirilmiş Taşıma İşlemlerini İşleme.
Sürükleyip Bırakarak Veri Aktarımı
Uygulanması biraz daha karmaşık olsa da, sürükleyip bırakma veri aktarımının Pano'ya göre bazı önemli avantajları vardır:
- Sürükle ve bırak aktarımları basit bir fare hareketiyle yapılabilir ve bu da işlemi Pano'dan daha esnek ve sezgisel hale getirir.
- Sürükle ve bırak, kullanıcıya işlemin görsel bir gösterimini sağlar. Kullanıcı, kaynaktan hedefe geçerken simgeyi izleyebilir.
- Sürükle ve bırak seçeneği, veriler kullanılabilir olduğunda hedefe bildirir.
Sürükle ve bırak işlemleri, veri aktarmak için veri nesnelerini de kullanır. Ancak, bırakma kaynağı Pano aktarımları için gerekenden daha fazla işlevsellik sağlamalıdır:
- Bırakma kaynağı, IDropSource arabirimini kullanıma sunan bir nesne de oluşturmalıdır. Sistem, işlem devam ederken kaynakla iletişim kurmak için IDropSource kullanır.
- Sürükle ve bırak veri nesnesi, imleç hareketini izlemek ve veri nesnesini temsil eden bir simge görüntülemekle sorumludur.
Bırakma hedefleri, Pano aktarımlarını işlemek için gerekenden daha fazla işlevsellik de sağlamalıdır:
- Bırakma hedefi IDropTarget arabirimini sağlamalıdır. İmleç bir hedef pencerenin üzerindeyken, sistem IDropTarget kullanarak hedefe imleç konumu gibi bilgiler sağlar ve veriler bırakıldığında bunu bildirir.
- Bırakma hedefinin, registerDragDropçağırarak sisteme kaydolması gerekir. Bu işlev, sisteme hedef pencerenin tutamacını ve hedef uygulamanın IDropTarget arabirimine bir işaretçi sağlar.
Not
Sürükleyip bırakma işlemleri için, uygulamanızın OleInitializeile COM başlatması ve CoInitializeile başlatmaması gerekir.
Aşağıdaki yordamda, genellikle sürükle ve bırak ile Shell verilerini aktarmak için kullanılan temel adımlar özetlenmiştir:
- Hedef, sisteme RegisterDragDrop çağrısını yaparak IDropTarget arabirimine bir işaretçi vermek ve bir pencereyi bırakma hedefi olarak kaydetmek için çağrı yapar.
- Kullanıcı sürükle ve bırak işlemini başlattığında, kaynak bir veri nesnesi oluşturur ve DoDragDropçağırarak bir sürükleme döngüsü başlatır.
- İmleç hedef pencerenin üzerindeyken sistem, hedefin IDropTarget yöntemlerinden birini çağırarak hedefi bildirir. Sistem, imleç hedef pencereye girdiğinde IDropTarget::DragEnter çağırır ve imleç hedef pencerenin üzerinden geçerken IDropTarget::DragOver. Her iki yöntem de bırakma hedefini geçerli imleç konumu ve CTRL veya ALT gibi klavye değiştirici tuşlarının durumunu sağlar. İmleç hedef pencereden ayrıldığında, sistem IDropTarget::D ragLeaveçağrısı yaparak hedefi bildirir. Bu yöntemlerden herhangi biri döndürdiğinde, sistem dönüş değerini kaynağa geçirmek için IDropSource arabirimini çağırır.
- Kullanıcı verileri bırakmak için fare düğmesini serbest bıraktığında, sistem hedefin IDropTarget::D rop yöntemini çağırır. Yöntemin parametreleri arasında veri nesnesinin IDataObject arabirimine yönelik bir işaretçi bulunur.
- Hedef, verileri ayıklamak için veri nesnesinin IDataObject::GetData yöntemini çağırır.
- Bazı Kabuk veri aktarımlarında, hedefin veri aktarımının sonucu hakkında kaynağa geri bildirim sağlamak için veri nesnesinin IDataObject::SetData yöntemini çağırması gerekebilir.
- Hedef veri nesnesiyle işini bitirdiğinde, IDropTarget::Dropdöner. Sistem, kaynağın DoDragDrop çağrısı döndürerek kaynağa veri aktarımının tamamlandığını bildirir.
- belirliveri aktarımı senaryosuna bağlı olarak, kaynağın DoDragDrop tarafından döndürülen değere ve hedef tarafından veri nesnesine geçirilen değerlere göre ek işlem yapması gerekebilir. Örneğin, bir dosya taşındığında kaynağın özgün dosyayı silip silmediğini belirlemek için bu değerleri denetlemesi gerekir.
- Kaynak, veri nesnesini serbest bırakır.
Yukarıda özetlenen yordamlar Shell veri aktarımı için iyi bir genel model sağlarken, Shell veri nesnesinde içerilebilen birçok farklı veri türü vardır. Uygulamanızın işlemesi gerekebilecek bir dizi farklı veri aktarımı senaryosu da vardır. Her veri türü ve senaryosu, yordamdaki üç temel adıma biraz farklı bir yaklaşım gerektirir:
- Bir kaynağın Shell verilerini içerecek şekilde bir veri nesnesi oluşturması.
- Hedef, veri nesnesinden Shell verilerini nasıl ayıklar?
- Kaynağın veri aktarımı işlemini nasıl tamamlayacağı.
Kabuk Veri Nesnesi, bir kaynağın Shell veri nesnesini nasıl oluşturduğuna ve bu veri nesnesinin hedef tarafından nasıl işlenebileceğine ilişkin genel bir tartışma sağlar. Kabuk Veri Aktarımı Senaryolarını İşleme bir dizi yaygın Kabuk veri aktarımı senaryosunun nasıl işleneceğini ayrıntılı olarak ele alır.