请问怎么获得程序本身所在的目录? 急用,多谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 "he.txt"程序本身目录的he.txt DWORD GetCurrentDirectory( DWORD nBufferLength, // size of directory buffer LPTSTR lpBuffer // directory buffer); 我是说要得到程序的安装目录,比如windows在c;\windows DWORD GetModuleFileName( HMODULE hModule, LPTSTR lpFilename, DWORD nSize);从lpFilename中判断最后1个'\'的位置,取得路径 GetCurrentDirectory,它在运行时可以得到自己的目录。 我的程序在e:\1211\Debug,GetCurrentDirectory为什么只能返回e:\1211 char dir[MAX_PATH];::GetModuleFileName(NULL,dir,MAX_PATH);AfxMessageBox(dir); char dir[MAX_PATH];::GetModuleFileName(NULL,dir,MAX_PATH);AfxMessageBox(dir); 我的程序在e:\1211\Debug,GetCurrentDirectory为什么只能返回e:\1211:你是在vc中直接运行的吧,如果你在e:\1211\debug下直接运行你的程序就能得到这个路径了要得到Windows的目录,调用GetWindowsDirectory,会得到如c:\windows的路径要得到系统的目录,调用GetSystemDirectory,会得到如c:\windows\system的路径 //GetCurPath 获取本程序运行路径CString GetCurPath(){ CString FilseName; char chCurPath[255]; GetModuleFileName(NULL, chCurPath, 255); FilseName=chCurPath ; int n=-1,i; do { i=n; n=FilseName.Find("\\",n+1); }while(n>-1); //获取程序路径 if(i>-1) FilseName=FilseName.Mid(0,i); return FilseName;} GetModuleFileName(NULL,dir,MAX_PATH);一定行GetCurrentDirectory最好在程序初始化是用才能保证正确 GetCurrentDirectory不可靠,因为如果程序中你调用过_chdir等改变当前目录的函数后,返回就是你改变后的目录。可以先调用::GetModuleFileName(NULL,Temp,MAX_PATH);取得带有程序所在目录的程序名举例temp为“c:\dir\myexe.exe”然后使用其他方法剪切掉\myexe.exe可这样: int ch = '\\'; ::GetModuleFileName(NULL,Temp,MAX_PATH); pRest = strrchr(Temp, ch); Length = pRest - Temp; strncpy(DirName, Temp, Length); DirName[Length] = '\0';最后结果为DirName。 vc 子窗口显示问题 辐射最大的是真的是键盘!怎么办? 求助:richedit改变字体的问题 DM642做客户端的时候出现的问题 一道趣味题,不知道可以用编程来解决不???? 傻瓜问题 高分求解 关于工具栏上的冒泡提示. 怎么部署ISAPI的DLL 如何实现文件夹/文件选择对话框,就像 Visual Studio.net 中的那样? 请教一个调试问题?? 一个Dialog的构造函数中如何终止Dialog生成 如何扩展IE,让他显示我的3D文件中的图像
程序本身目录的he.txt
DWORD nBufferLength, // size of directory buffer
LPTSTR lpBuffer // directory buffer
);
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
从lpFilename中判断最后1个'\'的位置,取得路径
::GetModuleFileName(NULL,dir,MAX_PATH);
AfxMessageBox(dir);
::GetModuleFileName(NULL,dir,MAX_PATH);
AfxMessageBox(dir);
你是在vc中直接运行的吧,如果你在e:\1211\debug下直接运行你的程序就能得到这个路径了要得到Windows的目录,调用GetWindowsDirectory,会得到如c:\windows的路径
要得到系统的目录,调用GetSystemDirectory,会得到如c:\windows\system的路径
CString GetCurPath()
{
CString FilseName;
char chCurPath[255];
GetModuleFileName(NULL, chCurPath, 255);
FilseName=chCurPath ;
int n=-1,i;
do
{
i=n;
n=FilseName.Find("\\",n+1);
}while(n>-1); //获取程序路径
if(i>-1)
FilseName=FilseName.Mid(0,i);
return FilseName;}
一定行GetCurrentDirectory最好在程序初始化是用才能保证正确
举例temp为“c:\dir\myexe.exe”
然后使用其他方法剪切掉\myexe.exe
可这样:
int ch = '\\'; ::GetModuleFileName(NULL,Temp,MAX_PATH);
pRest = strrchr(Temp, ch);
Length = pRest - Temp;
strncpy(DirName, Temp, Length);
DirName[Length] = '\0';最后结果为DirName。