Re: [請益] Win32 progrmming--CurrentDirectory
1.
不是,不要想太多,就是工作路徑,例如捷徑裡面有個開始位置,那個就可以跟執行檔不同,也是工作路徑。
工作路徑可以獨立設定,透過 Windows Shell 跑的時候,若沒有設定,預設會是執行檔路徑。例如檔案總管是 Windows Shell 的一部分。
當你 A 呼叫 B 所用的 API 沒指定 B 的工作路徑時,B 的 Process 才會在 A 的工作路徑上,若是用編譯器或語言自帶的 Shell 方法,則看編譯器是否有預設值而定。
A / B / E 是三個獨立的 Process ,可以有各自的工作路徑。
2.
基本上是,但有時候要看編譯器是不是有啥鳥設定。
3,4.
我自己習慣用
Module32First / Module32Next
來列舉。
==> 本文由 "moon <Homoon.bbs@ptt.cc>"
> 於 news:4da2OU%245zZ%40ptt.cc 發表
>
> 不好意思, 想請教各位..問題可能很蠢...Orz...
> [A.exe] ---呼叫---> [B.exe] ---呼叫-->[C.dll]---呼叫-->[E.exe]
> 1.CurrentDirectory (使用GetCurrentDirectory API)
> (不使用SetCurrentDirectory的時候)
> ---請問他的明確定義, 是指最上層執行檔(exe)的所在目錄嗎 ?
> 2.當我使用 "\\abcd.txt"這樣的相對路徑
> ---這個檔案的full path 是不是即是<CurrentDirectory>\abcd.txt
>
> 4.GetModuleFileName
> ---第一個參數是NULL, 得到的應該是"Current module"
> (實驗結果似乎是得到執行檔)
> ---指名Module或先前指名執行文件的名稱 會得到dll/exe
> 3.Current Module
> ---意思是指現在執行文件 可以是exe/dll 還是只有指exe
> ======================================================
> 所以對[E.exe] 而言, CurrentDirectory ---------->[A.exe] 的目錄
> GetModuleFileName(NULL..)-->[E.exe] 的目錄
> Current Module ------------>[E.exe]
> [C.dll] 而言. CurrentDirectory ---------->[A.exe]的目錄
> GetModuleFileName(NULL..)-->[B.exe]的目錄
> Current Module ------------>[C.dll]
>
> 想請問一下....這樣的定義是對的嗎 ...Orz!!
> 叩謝
>
--
風禹科技驗證有限公司 ASP.NET Web News Reader 0.2.7 UTF-8 Beta
網站地圖 http://tlcheng.twbbs.org/wwwmap.htm
流域防洪/區域水資源/徐昇網/玫瑰圖/語音通訊 文章與程式
Basic/Fortran/Windows API/.Net/輔助說明檔 原始碼、文章與討論
微軟程式設計、系統管理使用新技術論壇討論區,網友回覆後即時簡訊、電子郵件通知:
MSDN: http://forums.microsoft.com/msdn-cht/default.aspx?siteid=14
TechNet: http://forums.microsoft.com/technet-cht/default.aspx?siteid=23
--
ASPNET News Reader http://tlcheng.twbbs.org/News/Reader.aspx
RSS 2.0 http://tlcheng.twbbs.org/News/rss2.aspx?Action=List&Newsgroup=tw.bbs.comp.language
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):