本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5165721
转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8683519
欢迎关注微博:http://weibo.com/MoreWindows
调整进程当前目录为程序可执行文件所在目录是个非常实用的方法。为了更加的让代码复用,本文将调整进程当前目录为程序可执行文件所在目录这一功能封装为三个实用函数——
1.SplitPathFileName
这个函数将文件全名(带路径)分解成路径名,文件名,后缀名。
2.GetProcessPathNameAndFileName
得到当前进程可执行文件的路径名,文件名,后缀名。
3.AdjustProcessCurrentDirectory
调整进程当前目录为程序可执行文件所在目录
各函数使用示范可以参见如下程序:
//调整进程当前目录为程序可执行文件所在目录
//http://blog.csdn.net/morewindows/article/details/8683519
//By MoreWindows( http://blog.csdn.net/MoreWindows )
#include <windows.h>
#include <stdio.h>
#include <conio.h>
//将文件全名(带路径)分解成路径名,文件名,后缀名
//C:\test\test.exe -> "C:\test\", "test", ".exe"
//By MoreWindows( http://blog.csdn.net/MoreWindows )
void SplitPathFileName(const char *pstrPathFileName, char *pstrPath, char *pstrFileName, char *pstrExtName)
{
if (pstrPath != NULL)
{
char szTemp[MAX_PATH];
_splitpath(pstrPathFileName, pstrPath, szTemp, pstrFileName, pstrExtName);
strcat(pstrPath, szTemp);
}
else
{
_splitpath(pstrPathFileName, NULL, NULL, pstrFileName, pstrExtName);
}
}
//得到当前进程可执行文件的路径名,文件名,后缀名
//如运行C:\test\test.exe 得到 "C:\test\", "test", ".exe"
//By MoreWindows( http://blog.csdn.net/MoreWindows )
BOOL GetProcessPathNameAndFileName(char *pstrPath, char *pstrFileName, char *pstrExtName)
{
char szExeFilePathFileName[MAX_PATH];
if (GetModuleFileName(NULL, szExeFilePathFileName, MAX_PATH) == 0)
return FALSE;
SplitPathFileName(szExeFilePathFileName, pstrPath, pstrFileName,pstrExtName);
return TRUE;
}
//调整进程当前目录为程序可执行文件所在目录
//By MoreWindows( http://blog.csdn.net/MoreWindows )
BOOL AdjustProcessCurrentDirectory()
{
char szPathName[MAX_PATH];
GetProcessPathNameAndFileName(szPathName, NULL, NULL);
return SetCurrentDirectory(szPathName);
}
int main()
{
printf(" 调整进程当前目录为程序可执行文件所在目录 \n");
printf(" - http://blog.csdn.net/morewindows/article/details/8683519 -\n");
printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n");
char szCurrentDirectory[MAX_PATH];
GetCurrentDirectory(MAX_PATH, szCurrentDirectory);
printf("进程当前目录为: \n%s\n", szCurrentDirectory);
AdjustProcessCurrentDirectory();
GetCurrentDirectory(MAX_PATH, szCurrentDirectory);
printf("\n调整后,进程当前目录为: \n%s\n", szCurrentDirectory);
getch();
return 0;
}
通过CMD来调用这个程序看看。
由图可以看出,程序的当前目录已经被调整到程序可执行文件所在目录了。
附1:得到程序所在目录还可以使用PathRemoveFileSpec函数。20130507
本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5165721
转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8683519
欢迎关注微博:http://weibo.com/MoreWindows
分享到:
相关推荐
vc++.net获取当前运行程序所在的目录 vc++.net获取当前运行程序所在的目录,自动查找自身所在的目录路径,枚举并显示出来,虽然是个简单的小例子,不过刚接触vc.NET的朋友可能对其方方面面还是很陌生,希望通过这些...
windows下定时结束进程例子 使用的函数有: CreateToolhelp32Snapshot Process32First Process32Next OpenProcess TerminateProcess
VC++小树浏览器(完整源程序+可执行文件).rar VC++小树浏览器(完整源程序+可执行文件).rar
VC++ 遍历FTP文件目录 结合socket 结合文件sdk知识。 有兴趣的可以瞅瞅。
vc++守护进程,守护一个程序的开启,关闭自动打开.
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或...
基于socket UDP协议实现文件传输(windows vc++源代码) UDP传1GB的文件仅需15秒 该代码包含 根据文件内容长度生成MD5码,以供校验文件完整性 本代码包含windows vc++编写dll的代码
本例将学习Windows系统进程管理器的开发,获取Windows进程:VC++进程管理器,...获得进程的可执行文件的文件名,先获得该进程句柄,通过进程标识,利用数组ID指定的获得存在的一个进程的句柄,中止进程,刷新进程……
有时候我们需要知道需要用到的dll文件是否是64位的,我们可以用这个程序检测,用VC++6.0打开程序,修改main函数下int n = ...将文件路径修改为想要检测的可执行程序,运行结果为x64则是64位程序。
本文给大家分享了VC++中进程与多进程管理的方法。
VC++生成可执行文件文档资料,release debug中不同可执行文件的区别
利用VC++编写关于高响应比的进程管理,包括进度条,就绪,阻塞,唤醒等各种操作。
很详细的Windows蓝牙通信程序,开发环境是VC++2008.
VC++杀进程的函数源码 调用API写了一个结束指定进程名的小程序, 没有什么技术含量,只供初学者熟悉一下API而已
单独写的文件,已使用vs2008的项目测试过代码可用 主要功能是查找设置的目录下所有该类型的文件,然后保存在结构体中, 代码作者菜鸟一枚,漏缺之处往指出
VC++的进程注入小程序,含源码。某些杀软可能会提示有毒,这是程序本身的问题,保证不含木马。
VC++ 实现增大可执行文件的体积 自定义文件大小
扫描目录下的文件,列出目录下的文件(windows vc++版,Linux gcc版) 我自己写了Visual C++版和Linux gcc版 两版
vc++进程调度代码