----------------------代码段开始------------------------------ CString strText;TCHAR exepath[MAX_PATH]={0};::GetModuleFileName(NULL,exepath,MAX_PATH);strText=exepath;strText=strTextLeft(strTextReverseFind(''''));strText += _T("");
----------------------代码段结束-------------------------------
GetModuleFileName是一个API函数,通过这个函数,可以获得运行的当前程序的EXE文件所在的路径。直接将这几句代码,在MFC中封装成一个函数即可。GetModuleFileName第一个参数是示例句柄,设为NULL则表示当前执行的EXE的。第二个参数就是接受得到的可执行路径的字符串缓冲。第三个是缓冲的大小。大小就是声明的缓冲的大小,以TCHAR为单位。strTextLeft()是CString提供的字符串截取函数,具体的可以查看MSDN或者本站其他相关文章。ReverseFind()是CString提供的字符串查找函数,具体的可以查看MSDN或者本站其他相关文章。本文就是给大家提供一个方面,仅此而已。
使用 ApplicationStartupPath
至于
SystemIODirectoryGetCurrentDirectory不行,因为应用程序有个当前工作目录,这个工作目录是会变的,不总是程序的启动目录(当然默认启动是应用程序目录)。
比如说,你打开命令行(cmd),它就会显示一个路径,你会发现这个路径(通常是 C:\Documents and settings\用户名,在XP下)不是cmdexe所在目录(cmdexe 是在system32下的)。
而这个当前目录很容易改变,甚至当你使用了文件浏览对话框(比如打开文件、保存文件)时,这个当前目录都会改变到它最后选择的目录。
而快捷方式中的启动目录,就是设置当前应用程序的工作目录。默认情况下,新建的快捷方式的启动目录就是应用程序所在目录,所以你不修改的话是可以正常工作的,明白了?
1 在工作列上按鼠标右键,选"启动任务管理器"
2 先选进程页签,再到要查看路径的进程上按鼠标右键,选"属性"
3 见下图红框标示处,即为该进程的路径
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
看看你的计算机上有没有 Windows XP 的 wmic 命令。
在DOS 黑窗 打命令
wmic process
可以获得所有进程信息。
编程序,用 system("wmic process > my_logtxt");
把 屏幕输出 转向 到 文件 my_logtxt 里。
然后 fopen my_logtxt ,从里面 抓出 你要的 进程。
如果觉得信息太多,查一下帮助文件,找合适的选项命令,wmic process 加上选项 就可以了。
例如:
system("wmic process get ExecutablePath > my_logtxt");
my_logtxt 里有:
C:\WINDOWS\System32\smssexe
C:\WINDOWS\system32\csrssexe
C:\WINDOWS\system32\winlogonexe
C:\WINDOWS\system32\servicesexe
C:\WINDOWS\system32\lsassexe
C:\WINDOWS\system32\svchostexe
。。。
获取当前目录绝对路径:set current_path="%cd%" 比如要运行子目录的dir1\testcmd就直接加入下面一行%current_path%\dir1\testcmd
以上就是关于如何获取EXE可执行文件的所在路径全部的内容,包括:如何获取EXE可执行文件的所在路径、如何获取应用程序的绝对路径、OS X中如何获取当前运行程序的路径 / 蓝讯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)