Re: [問題] 使用system("")的小疑惑

看板C_and_CPP作者 (有趣生活)時間15年前 (2009/08/03 01:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《QQ29 (我愛阿蓉)》之銘言: : 是這樣的~ : 我想要在程式執行到某步驟 去run另一個exe檔案 : 我只知道很簡單的使用system("c:\\folder\\xxx.exe");這樣 : 但我這個xxx.exe他會去讀取 某個resource.cfg檔案 : 我用滑鼠點xxx.exe ok他可以執行 : 但是我使用system去呼叫 他就說xxx.exe找不到resource.cfg.... : 另外我再試著用 : 命令提示字元 c:\>c:\folder\xxx.exe......一樣說讀不到cfg檔案 : 我改用c:\>cd folder : c:\folder>xxx.exe.................用這樣就可以跑這個執行檔了 : 我在想是不是system呼叫 環境上路徑上還是什麼地方 我忽略了或是我不明白的觀念??? : 謝謝!! 這個問題如果要在程式本身解決的話 就是讓程式知道,自身執行檔所在的資料夾,然後再把 "resource.cfg" 接在後面 這樣無論程式在 C:\ 或 C:\folder 被執行都無所謂了 都能開到 <程式exe目錄>\resource.cfg Windows 程式的解法可以這樣做: ------------------------------------------------------ TCHAR filename[MAX_PATH]; GetModuleFileName(NULL, filename, MAX_PATH); \\ 取出執行檔所在完整路徑(含exe) PTCHAR p = _tcsrchr(filename, _T('\\')); \\ 定位最後一個 \ 字元 _tcscpy(p+1, _T("resource.cfg")); \\ 把結尾exe檔名替換成 "resource.cfg" 這時 filename 內容就是 <程式exe目錄>\resource.cfg 了 ------------------------------------------------------ 以上是步驟 code沒有實際編過,實際撰寫還須檢查一下buffer大小和字串函式回傳值 MSDN - GetModuleFileName Function http://msdn.microsoft.com/en-us/library/ms683197(VS.85).aspx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.53.23 ※ 編輯: UNARYvvv 來自: 140.115.53.23 (08/03 01:35)
文章代碼(AID): #1ATSrc1y (C_and_CPP)
文章代碼(AID): #1ATSrc1y (C_and_CPP)