1方法1
char pBuf[MAX_PATH]; //存放路径的变量
GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录
strcat(pBuf,"\\");
strcat(pBuf,AfxGetApp()->m_pszExeName);
strcat(pBuf,"exe"); //获取程序的全文件名
2方法2
//函数返回应用程序所在的路径
CString CClientApp::ReturnPath()
{
CString sPath;
GetModuleFileName(NULL,sPathGetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPathReleaseBuffer ();
int nPos;
nPos=sPathReverseFind('\\');
sPath=sPathLeft(nPos);
return sPath;
}
3对比及建议
方法1获取的是程序的工作路径,如某个程序安装在C,D盘或者其它任何,当你从[开始]-[程序]后的菜单中打开该文件,此时获取的是用户工作路径,如:C:\Documents and Settings\[计算机当前用户名]\\
如果你想通过这个路径来加载你放在程序目录下的文件,必定出错。通常这种情况在你编译调试程序时是不会出错的,你跟踪得到的绝对路径,但打包安装后一定出问题。
方法2获取的是程序的绝对路径,用这个路径加载同目录下的文件是不会有问题的。
如果你要确保成功加载文件,建议使用方法2!!!!!!
用GetModuleFileName这个函数就可以做到了,完整代码如下,自己编译运行下就知道了
#include <stdioh>
#include <windowsh>
int main()
{
char ExeFile[200];
//得到当前文件路径名
GetModuleFileName(NULL,ExeFile,200);
printf("当前文件路径为:\n");
printf("%s\n",ExeFile);
return 0;
}
1 在工作列上按鼠标右键,选"启动任务管理器"
2 先选进程页签,再到要查看路径的进程上按鼠标右键,选"属性"
3 见下图红框标示处,即为该进程的路径
很简单:
API函数:
GetModuleFileName(模块句柄,保存的字符数组,字符数组的大小);
一般来说,要获取正在运行程序的全路径,那就在第一个参数写个0
参数2是保存的数组,获取的路径将保存在这个数组
参数三是字符数组的大小
给你一个示例程序:
#include <windowsh>
#include <stdioh>
void main()
{
char ExePlace[1024];/保存地址的数组/
GetModuleFileName(0,ExePlace,1024);/获取当前运行全路径/
puts(ExePlace);/输出获取到的路径/
}
获取当前目录绝对路径:set current_path="%cd%" 比如要运行子目录的dir1\testcmd就直接加入下面一行%current_path%\dir1\testcmd
Option Explicit
Private Sub Command1_Click()
MsgBox ExePath("vb6exe")
End Sub
Public Function ExePath(ExeNm As String) As String
Dim objWMIService, colProcesslist, objProcess
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\\root\cimv2")
Set colProcesslist = objWMIServiceExecQuery("Select from Win32_Process Where Name = '" & ExeNm & "'")
If colProcesslistCount > 0 Then
For Each objProcess In colProcesslist
ExePath = ExePath & objProcessExecutablePath & vbCrLf
Next
End If
Set objWMIService = Nothing
Set colProcesslist = Nothing
End Function
使用 ApplicationStartupPath
至于
SystemIODirectoryGetCurrentDirectory不行,因为应用程序有个当前工作目录,这个工作目录是会变的,不总是程序的启动目录(当然默认启动是应用程序目录)。
比如说,你打开命令行(cmd),它就会显示一个路径,你会发现这个路径(通常是 C:\Documents and settings\用户名,在XP下)不是cmdexe所在目录(cmdexe 是在system32下的)。
而这个当前目录很容易改变,甚至当你使用了文件浏览对话框(比如打开文件、保存文件)时,这个当前目录都会改变到它最后选择的目录。
而快捷方式中的启动目录,就是设置当前应用程序的工作目录。默认情况下,新建的快捷方式的启动目录就是应用程序所在目录,所以你不修改的话是可以正常工作的,明白了?
以上就是关于如何得到当前用户的 ‘程序’文件夹的路径全部的内容,包括:如何得到当前用户的 ‘程序’文件夹的路径、如何用c++获取当前程序自身的完整路径、如何获取执行程序的当前路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)