如何判断一个运行程序的启动路径 如果你是要获得你自己的应用程序的启动路径,在程序启动后调用GetCurrentDirectory就能获得应用程序的启动路径。如果你是要取得别的应用程序的启动路径,首先取得它的进程号,然后在进程的信息中就包含了进程的启动路径。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 yb的GetCurrentDirectory不一定对,如果块届方式的工作路径和应用程序路径不一致市会Crash GetCurrentDirectoryThe GetCurrentDirectory function retrieves the current directory for the current process. 进程的当前目录并不是其启动文件所在的目录,这一点从创建快捷方式中便可看出来(因为你可任意设定进程的当前工作目录),要想得到进程启动文件所在的目录,应该用GetModuleFileName,然后去掉文件名部分即可。去掉文件名用几种方法:1. 逆序查找'\'或'/'字符2. 用GetFileTitle取得文件名,然后逆序查找文件名在全路径名中的位置 以上说的都不好!这是我原来跟踪 GetCommandLine()后编写的函数先用 GetWindowThreadProcessId() 得到 程序窗口Id 号,再调用本函数就可返回了char *GetProcPath(DWORD ProcId){static char ProcPath[MAX_PATH],*pstr,id[2];HANDLE hProc;DWORD dw;unsigned int offset;pstr=ProcPath+1;memset(ProcPath,0,MAX_PATH);ProcPath[0]=' ';hProc=OpenProcess(PROCESS_VM_READ,0,ProcId);if(hProc==NULL)return NULL;ReadProcessMemory(hProc,(LPCVOID)0xbffcade4,&offset,4,&dw);ReadProcessMemory(hProc,(LPCVOID)offset,&offset,4,&dw);ReadProcessMemory(hProc,(LPCVOID)(offset+0x40),&offset,4,&dw);ReadProcessMemory(hProc,(LPCVOID)(offset+8),&offset,4,&dw);ReadProcessMemory(hProc,(LPCVOID)offset,pstr,MAX_PATH,&dw);if(pstr[0]==0) ReadProcessMemory(hProc,(LPCVOID)0x620298,pstr,MAX_PATH,&dw); CloseHandle(hProc);if(*pstr==0)return NULL;if(*pstr!='\"')pstr--;return pstr;} listctrl 上下左右移动 求助日期时间选择器控件 CDateTimeCtr 请问如何设置socket不使用分片啊?为了实现MTU路径发现机制 在VC中基于对话框生成的工程如何重载onIdle方法? 关于fputws写入UNICODE字符串,但是却只能得到ANSI字符 全局钩子的问题 我在OnPaint()里面加了两个Bitblt()函数,就出现了程序界面闪烁的现象,该怎么解决? ATL库和 CJ60lib 冲突的问题 (在线等待。。。) 各位网友帮个忙 求 调用 DLL 来进行字符串处理 程序 如何用delphi编程得到数据库中一张表的详细结构.... 有劳各位,如何学习C++?
The GetCurrentDirectory function retrieves the current directory for the current process.
1. 逆序查找'\'或'/'字符
2. 用GetFileTitle取得文件名,然后逆序查找文件名在全路径名中的位置
先用 GetWindowThreadProcessId() 得到 程序窗口Id 号,再调用本函数就可返回了
char *GetProcPath(DWORD ProcId)
{
static char ProcPath[MAX_PATH],*pstr,id[2];
HANDLE hProc;
DWORD dw;
unsigned int offset;
pstr=ProcPath+1;
memset(ProcPath,0,MAX_PATH);
ProcPath[0]=' ';
hProc=OpenProcess(PROCESS_VM_READ,0,ProcId);
if(hProc==NULL)return NULL;
ReadProcessMemory(hProc,(LPCVOID)0xbffcade4,&offset,4,&dw);
ReadProcessMemory(hProc,(LPCVOID)offset,&offset,4,&dw);
ReadProcessMemory(hProc,(LPCVOID)(offset+0x40),&offset,4,&dw);
ReadProcessMemory(hProc,(LPCVOID)(offset+8),&offset,4,&dw);
ReadProcessMemory(hProc,(LPCVOID)offset,pstr,MAX_PATH,&dw);
if(pstr[0]==0)
ReadProcessMemory(hProc,(LPCVOID)0x620298,pstr,MAX_PATH,&dw);
CloseHandle(hProc);
if(*pstr==0)return NULL;
if(*pstr!='\"')pstr--;
return pstr;
}