作者UNARYvvv (有趣生活)
看板C_and_CPP
标题Re: [问题] 使用system("")的小疑惑
时间Mon Aug 3 01:31:17 2009
※ 引述《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)