2010-02-19 15 views
9

Küçük bir yardımcı program için yazıyorum (.NET, C#), panoya kopyalama işlemleri ve pano yapıştırma işlemlerini izlemek istiyorum.Panoya nasıl yapıştırılır ve kendi verilerimi iletir?

Benim düşüncem, rastgele bir uygulamaya yapıştırırken kendi verilerimi sağlamaktır.

Bir kopyalama işleminin izlenmesi clipboard viewer kullanılarak kolayca yapılabilir. uygulamaların sorgular "Ne biçimleri mevcuttur" için

  • Cevap: çok daha gelişmiş gibi geliyor bana

    şey bir "panoya yapıştırmak sağlayıcı" yazmaktır.

  • Uygulama verilerini yapıştırma işlemlerine gönderin.

Ben this posting ve this posting, bulunan ancak bunların hiçbiri beni gerçekten yardımcı olacak gibi görünüyor.

Sanırım şu anki panonuzu taklit etmek/kaçırmak zorundayım.

Soru:

o yapıştırma işlemleri açısından panosu "sarmak" ve "pano vekil" benim kendi tür sağlamak mümkün mü?

+1

PS: Ben CodeProject sizi biliyorum;) ironik Bunun için CodeProject yönlendiriliyorsanız o !! !! : D lol – t0mm13b

cevap

11

Pencere kancası kullanarak panoya kanca takmanız gerekir. Bir pencere kancası, küresel olayların gerçekleşmesini engellemenin ve mesajı değiştirmek ya da bunlara müdahale etmek için kendi çengel prosedürünü sağlamanın bir yoludur. Nasıl takılacağını açıklayan CodeProject'a bakın. Kopyalama/yapıştırma işlevselliğini dinleyen bir clipboard helper. İşte bunu yapan bir Clipboard spy. İşte, Clipboard hook'u uygulayan başka bir makale.

+5

Teşekkürler Tom! En iyi makale referansı "Ctrl + V" kancalayan kişidir. Ancak: Kullanıcı bir bağlam menüsünden "Yapıştır" ı sağ tıklatıp seçerse veya başka bir yolla tamamlarsa ne olur? Bence çözüm, klavyeye/fareye/her ne olursa olsun, doğrudan panoya iletişimini engellemek için _not_ olacaktır. –

9

WinAPI'de "gecikmeli oluşturma" konusuna bakın. Bu teknikle panoyu boş tutamaçlarla yüklersiniz ve yapıştırma üzerine pencereler bir WM_RENDERFORMAT mesajıyla size bildirir. Excel gibi uygulamalar 25 farklı formatı "kopyalamak" ile nasıl kurtulabiliyor. Onları gerçekten kopyalamaz. Aslında TEXT gibi bazı yaygın olanları üretecekler, ancak Bitmap, Html, WKS, vb. Gibi diğerlerini "hedefleyen", hedef uygulamanın ne yapmak istediğini görmek için beklemeyi tercih ediyor.
Bunu düşünün: Excel'de 5000 hücre seçebilir ve kopyalayabilir ve pano oldukça hızlı bir şekilde güncellenebilir. Şimdi Windows Paint'e yapıştırın ve Excel'in büyük bir bitmap oluşturmaya çalıştığı anda sisteminiz tarar. Eski sürümler, tüm kullanılabilir belleği kullandıktan ve sayfa dosyasını yedikten sonra genellikle çökecektir. Bu Windows 3.1 günlerinde geri döndü. Modern sürümler, "bitmap çok büyük" veya "yeterli bellek" hakkında bir mesaj verir. Uyarı: Gecikmeli Rendering, panoyu izleyen ve Uzak Masaüstü, VMWare, Office Panosu ve kendi ClipMate gibi verileri kendilerine otomatik olarak yapıştıran uygulamalar tarafından önceden tetiklenecektir. Bazı pano izleme programları burada belgelenen ettik CF_Clipboard_Viewer_Ignore bayrağını kullanarak pano güncellemesini görmezden söyledi edilebilir: link text

+0

İnsan ...... harika .. –

İlgili konular