我正在構建Office使用的DLL。當Office運行它時,我想確定它的位置。那可能嗎?加載的DLL能夠知道它所在的位置嗎?
ex。的DLL中的代碼時,辦公室內運行:
// should return C:\tmp\officeaddin.dll,
// currently C:\Program Files\Microsoft Office\Office 12
MessageBox.Show(Application.StartupPath)
我正在構建Office使用的DLL。當Office運行它時,我想確定它的位置。那可能嗎?加載的DLL能夠知道它所在的位置嗎?
ex。的DLL中的代碼時,辦公室內運行:
// should return C:\tmp\officeaddin.dll,
// currently C:\Program Files\Microsoft Office\Office 12
MessageBox.Show(Application.StartupPath)
下即使運行Office的內應工作:
Getting the path of the current assembly
(它基本上可以歸結爲Assembly.GetExecutingAssembly().Location
,但見鏈接上面有更詳細的信息。)
當DLL加載時,它調用具有實例句柄的DllMain。如果您實現此功能,則可以記錄DLL的實例句柄。由此,您可以致電GetModuleFileName。
在.NET中這是照顧你。有關詳細信息,請參閱此question和所選答案。
如果它是一個.NET庫,則應該使用Assembly.GetExecutingAssembly().Location
。 Application.StartupPath
顯示主應用的路徑。
美麗感謝 – karlipoppins 2010-08-17 09:10:38
這個工作對我來說:
Environment.CurrentDirectory
所以,你可以只設置一個字符串,它如:
Dim location as String = Environment.CurrentDirectory & "\"
我看到'Environment.CurrentDirectory'返回調用可執行文件的基路徑。如果你在一個DLL中,被調用作爲Windows服務的一部分,你會得到系統根文件夾的路徑。 – 2017-01-30 13:50:59
美麗感謝 – karlipoppins 2010-08-17 09:10:09