2015-01-14 23 views
0

我厭倦了查找方法簽名。我寧願只輸入類似User32.SendMessage...的東西。有沒有這樣的事情?是否有一個C#可直接使用的類,它導入USER32.DLL中的所有內容?

主要有靜態類與一堆的定義,如:

[DllImport("user32.dll")] 
public static extern bool SetParent(int hWndChild, int hWndNewParent); 
+0

這個問題出了什麼問題? – Schultz9999

+1

我投票結束,原因*要求我們推薦或找到書籍,工具,軟件庫,教程或其他非本網站資源的問題因堆棧溢出而偏離主題,因爲它們傾向於吸引自以爲是的答案和垃圾郵件。相反,請描述問題以及到目前爲止解決問題的方法。*請參閱http://stackoverflow.com/help/on-topic –

回答

1

沒有內置類或靜態庫做到這一點。不過,你可以嘗試谷歌搜索一些免費的圖書館,甚至編寫自己的實現。

事情是,user32.dll是win32 api的一部分,它最初是爲C++應用程序設計的。當微軟推出.NET(以及不久之後的C#)時,他們沒有提供本地支持 - 爲了運行.NET應用程序,您需要.NET DLL二進制文件。因此,除非微軟決定糾正這個問題,否則你將不得不堅持一堆定義。

+0

如果有很多人使用'DllImport',那麼我認爲應該有一個人全部導入。我當然可以創建一個這樣的班級,但在花時間之前,我想知道是否有其他人已經爲我做了:) – Schultz9999

+0

不幸的是,它像使用蘋果製作橙汁 - 除非你弄得亂七八糟,它只是不工作:) – Forrest4096

2

不要這樣做。

user32.dll在不同版本的Windows中不包含相同的功能。如果你只是簡單地導入所有的東西,你很可能會確保你的程序只能運行在你當前使用的特定版本的Windows上。

每次你導入一個本地函數時,你都應該檢查它是從哪個版本來的 - 然後決定它是否是你可以生活的依賴項。

相關問題