2010-08-17 52 views
2

我正在構建Office使用的DLL。當Office運行它時,我想確定它的位置。那可能嗎?加載的DLL能夠知道它所在的位置嗎?

ex。的DLL中的代碼時,辦公室內運行:

// should return C:\tmp\officeaddin.dll, 
// currently C:\Program Files\Microsoft Office\Office 12 
MessageBox.Show(Application.StartupPath) 

回答

0

當DLL加載時,它調用具有實例句柄的DllMain。如果您實現此功能,則可以記錄DLL的實例句柄。由此,您可以致電GetModuleFileName

在.NET中這是照顧你。有關詳細信息,請參閱此question和所選答案。

2

如果它是一個.NET庫,則應該使用Assembly.GetExecutingAssembly().LocationApplication.StartupPath顯示主應用的路徑。

+0

美麗感謝 – karlipoppins 2010-08-17 09:10:38

1

這個工作對我來說:

Environment.CurrentDirectory 

所以,你可以只設置一個字符串,它如:

Dim location as String = Environment.CurrentDirectory & "\" 
+0

我看到'Environment.CurrentDirectory'返回調用可執行文件的基路徑。如果你在一個DLL中,被調用作爲Windows服務的一部分,你會得到系統根文件夾的路徑。 – 2017-01-30 13:50:59

相關問題