2009-10-21 11 views
8

Her birkaç ayda bir kendimi Win32'dan C# 'den çağırmaya ihtiyacım var. Her ne kadar bir düzine kez yaptım ki, ben genellikle kesin işlemeleri unutmuşum, bu yüzden web veya eski kodun etrafını karıştırdım ve ne gibi DllImport ifadelerine ihtiyacım olduğunu anladım.C# den Win32 çağırmak için daha acısız bir yolu var mı?

Yalnız mıyım?

Tüm Win32 API'si için gerekli bildirimlere sahip bir onaylanmış "Win32" sınıfı var mı? Olması gereken gibi görünüyor. Belki bir şey özlüyorum.

+3

Yalnız değilsiniz. +1 – spender

+1

Kesinlikle yalnız değil. +1 –

+1

pinvoke.net harika ama tek bir derleme çok güzel olurdu ... –

cevap

1

Açık kaynak projesi için harika bir fikir gibi geliyor.

/em kapağı düşünme üzerine koyar, ve ishal

0

Sen Reflector kullanabilir ve Win32Native arayabilirsiniz. PInvoking için kullanabileceğiniz bir dizi tanımlamaya sahiptir.

1

Doğru DllImport deyimlerini almak herkesin söylediği gibi kolaydır, ancak kullanımı kolaysa, genellikle C# sınıflarında gereksinim duyduğum Win32 işlevlerini sarar ve temel yardımcı derlememde derlerim. Bir dahaki sefere meclise başvuruyorum. Yani eğer bir Win32 fonksiyonuna ihtiyacım varsa, sadece eklemediğim takdirde, yardımcı kütüphanemde zaten var.

Ayrıca dönüş kodlarını İstisnalar yerine, yani HResult sıfır değilse, bir İstisna atarım, böylece C# uygulamalarının HResult veya dönüş kodları hakkında bilmesi gerekmez.