♣
c++ 怎么显示运行程序的完整路径???
我现在编写一个对系统正在运行进程进行管理的程序,类似任务管理器,
在网上找到一个代码能够得到运行的进程名和进程的路径,但路径不是完整的,
哪位能帮我想办法得到程序的完整路径?
程序源码如下:
/*
* showprocesspath_thapi
* 版权所有 (c) 2004 赵春生
* 2004.08.08
* http://timw.yeah.net
* http://timw.126.com
* 本程序适用于:winnt
* 代码在win2000p+sp4 + vc6+sp5测试通过
*/
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>
int main(void)
{
handle hprocess=createtoolhelp32snapshot(th32cs_snapprocess,0);
handle hmodule;
processentry32* pinfo=new processentry32;
moduleentry32* minfo=new moduleentry32;
pinfo->dwsize=sizeof(processentry32);
minfo->dwsize=sizeof(moduleentry32);
bool report;
char shortpath[max_path] = "";
printf("showprocesspath with [toolhelp api]\n\n");
report=process32first(hprocess,pinfo);
while(report)
{
hmodule=createtoolhelp32snapshot(th32cs_snapmodule,pinfo->th32processid);
module32first(hmodule, minfo);
getshortpathname(minfo->szexepath,shortpath,256);
printf("%s --- %s\n",pinfo->szexefile,shortpath);
report=process32next(hprocess, pinfo);
}
closehandle(hprocess);
closehandle(hmodule);
printf("\n");
return 0;
}
运行部分结果如下:
conime.exe --- c:\winnt\system32\conime.exe
popo.exe --- c:\progra~1\netease\popo2004\popo.exe
taskmgr.exe --- c:\winnt\system32\taskmgr.exe
msdev.exe --- c:\progra~1\micros~2\common\msdev98\bin\msdev.exe
maxthon.exe --- c:\progra~1\maxthon\maxthon.exe
vcspawn.exe --- c:\progra~1\micros~2\common\msdev98\bin\vcspawn.exe
showprocesspath --- f:\20050712\showpr~1\showpr~1\debug\showpr~1.exe
结果中popo.exe的路径是c:\progra~1\netease\popo2004\popo.exe
我想得到它的完整路径"c:\program files\netease\popo2004\popo.exe"
哪位高手能帮我想想办法解决这个问题!
· 网友精彩回答:
char drive[_max_drive]; char dir[_max_dir]; char fname[_max_fname]; char ext[_max_ext];
char szpath[max_path];
getmodulefilename(null, szpath, sizeof(szpath) / sizeof(szpath[0]));
_splitpath(szpath, drive, dir, fname, ext );
gappdir+=drive;
gappdir+=dir;
int main(int argc,char** argv){
printf("path is %s\n",argv[0]);
system("pause");
return 0;
}
getshortpathname得出来的路径就是这样子,你可以直接使用moduleentry32的成员
szexepath.
用api吧,getcurrentdirectory()
#include <direct.h>
_getcwd()
将:getshortpathname
改成:getlongpathname
- 更多问题:
- · 如何用project中的RC文件中的图标为button 设置图标 ?
- · EXCEL中设置下拉选择框的问题
- · 电脑奇怪死机!
- · 在java中,一个窗口如何控制另一个窗口如关闭
- · 在线等,急
- · 递归调用的错误,高手过来看看!谢谢了,十万火急~!
- · 请教SQL语句
- · 如何实现toolbar的隐藏和显示?
- · 系统的CPU总是占用100%
- · MessageFormat里的模式无法含有单引号吗
- · 这样的条件怎么加,高手帮忙
- · 请教两个数据表联合查询的问题
- · 什么情况下的类或者方法适合定义成静态的
- · navicat连接linux下数据库??
- · 关于Dos下执行Exe文件得到返回值,高手请进!
- · 数据库连接问题,占用内存非常大,怎么解决呀??
- · j2me技术文档
- · DirectX技术文档 | DirectX
- · socket技术文档
- · 负载均衡的应用
- · css专题 | css
- · UBB专栏
- · 应用中间件
- · java 分布式
- · ic查询
- · 接触式ic卡
- · 半导体公司
- · java database
- · spark lan
- · ultra iso
- · ca ssl
- · 戴尔供应链
- · 使用汇编写进注册表启动的简单例子
- · 禁用注册表有什么用处
- · 注册表在哪
- · 电脑注册表损坏时出现的十种症状
- · 怎样修改注册表
- · 如何恢复注册表啊
- · 谁有注册表恢复工具?
- · vb语言
- · firefox

