※ 引述《璉璉 <devil@tainan.com.tw.x>, 看板: Programming》之銘言:
: 1.
: 不是,不要想太多,就是工作路徑,例如捷徑裡面有個開始位置,那個就可以跟執行檔
: 不同,也是工作路徑。
: 工作路徑可以獨立設定,透過 Windows Shell 跑的時候,若沒有設定,預設會是執行檔
: 路徑。例如檔案總管是 Windows Shell 的一部分。
: 當你 A 呼叫 B 所用的 API 沒指定 B 的工作路徑時,B 的 Process 才會在 A 的工作
: 路徑上,若是用編譯器或語言自帶的 Shell 方法,則看編譯器是否有預設值而定。
: A / B / E 是三個獨立的 Process ,可以有各自的工作路徑。
GetCurrentDirectory() 的定義應該說是該 Process 的完整路徑
ShellExecute() 如上 devil 上篇所述, 補充一下 CreateProcess() 部分
A 呼叫 B, 使用 CreateProcess() 方式時, 一定要指定完整路徑, 不然會呼叫失敗
而這時被呼叫的 B, B 呼叫 GetCurrentDirectory() 後則是 B 的完整路徑
如果 B 是 .lnk, B 呼叫 GetCurrentDirectory() 後則是 B 的工作路徑
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.168.73