|
.\\與API函數GetModuleFileName獲取應用程序目錄有何不一樣?
采用.\\也能獲得應用程序目錄,采用GetModuleFileName也能獲得,二者有何不同? 一樣! 一個是相對路徑,一個是絕對路徑 .\\是的到應用程序的當前目錄,但當前目錄不一定等於應用程序執行文件的所在目錄,一個應用程序被啟動時,當前目錄是可以被任意設置的。 GetModuleFileName()得到模塊的完整路徑名,例如,你載入c:\windows\system32\a.dll,得到模塊句柄h,則你可以用GetModuleFileName()得到h模塊的完整路徑名。 .\\一般用在包含頭文件的語句中。 另一個是程序編譯后起作用的,例如,打開自定義的配置文件等。 如何去取得這個Hanlde? 如果你直接用LoadLibrary()或AfxLoadLibrary()載入dll,該函數返回值就是handle; 如果你隱式載入dll, 用GetModuleHandle("dll文件名")也可以得到handle; MFC程序得到本身路徑 在開發工程中,往往需要知道當前程序本身所在目錄。 方法一: //解析路徑,得到當前運行程序所在目錄 _splitpath(strAppName, drive, dir, NULL,NULL); 方法二: GetModuleFileName函數原型 |
文章轉自:http://hi.baidu.com/isbx/blog/item/60307dd9a15795eb38012f22.html
