2009-11-23 20 views
6

Bir USB bağlantı noktası, firewire bağlantı noktası vb. Aracılığıyla bir Windows sürücüsüne yeni bir sürücünün takılı olduğunu saptamam gerekiyor. WM_DEVICECHANGE iletisinin farkındayım Ancak bu, onu kullanabilmek için açılacak bir pencere gerektirir. Yeni sürücüler takıldığında algılayan C# içinde background işlemi oluşturmanın bir yolu var mı?Yeni bir sürücü USB veya başka yollarla bağlandığında bildirim alın (C#)

Arka plan bilgisi: Bu uygulamayı şirket çıkarılabilir sürücülerden bir solucan çıkarmak için yazmak istiyorum. Düzenli antivirüs yazılımı kaldırmak için başarısız oluyor. Solucanı kaldıracak bir senaryomuz var, ama el ile çalıştırılmalı, ki bu salgının oluşması için yeterince iyi değil.

cevap

4

A windows service hile yapmak gerekir

bir hizmet olarak CodeProject DriveDetector reworking deneyin ve size

+2

Yaptım ve işe yaradı. Bir hizmet için, yalnızca Application.DoEvents() öğesini çağıran sonsuz bir döngü ile başka bir iş parçacığı oluşturduğumdan emin olmak zorunda kaldım. Bunu yapmazsanız, DriveDetector WM_DEVICECHANGE mesajlarını atar ve alamaz. Ayrıca, DriveDetector çalışmasını yapmak için gizli bir form kullandığı için, masaüstü etkileşiminin hizmet için etkinleştirildiğinden emin olmalıydım. – Phil

+0

Bu yardımcı oldu sevindim! –

+3

Bu projeye baktığımda, bir hizmetle masaüstü etkileşimini sağlamak için iyi bir uygulama olmadığını anlıyorum. Günümüzde normal bir yürütülebilir dosya oluşturmanızı ve başlangıç ​​klasörüne bırakmanızı öneriyorum. – Phil

0

Bir pencere kolu veya hizmet durumu tanıtıcısıyla çalışması gerektiğinden, gizli bir pencere oluşturabilir veya bir hizmeti çalıştırabilirsiniz.

İlgili konular