Re: [問題] 使用system("")的小疑惑
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):