zoukankan      html  css  js  c++  java
  • 获取当前程序可执行文件所在路径

    GetModuleFileName() 函数返回当前进程已加载可执行或DLL文件的完整路径名(以''终止),该模块必须由当前进程地址空间加载。如果想要获取另一个已加载模块的文件路径,可以使用GetModuleFileNameEx()函数。

      DWORD WINAPI GetModuleFileName(    //失败返回0;

        _In_opt_  HMODULE hModule,   //应用程序或DLL实例句柄,NULL则为获取当前程序可执行文件路径名

        _Out_      LPTSTR lpFilename,   //接收路径的字符串缓冲区

        _In_         DWORD nSize   //接收路径的字符缓冲区的大小

      );

    CString strExePath;  
    CString strPath;  
    GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH+1);  
    AfxMessageBox(strPath);//"c:Programe FilesGoogleabc.exe"  
    int nPos = strPath.ReverseFind(_T('\'));  
    strExePath = strPath.Left(nPos+1);  
    AfxMessageBox(strExePath);//"c:Program FilesGoogle" 

      DWORD GetModuleFileNameEx(    //失败返回0;要包含Psapi.h头文件,并链接到Psapi.lib;

        HANDLE   hProcess,  //目标进程的句柄,进程的句柄须有PROCESS_QUERY_INFORMATION和PROCESS_VM_READ权限

        HMODULE  hModule,  //目标模块的句柄,为NULL时函数返回的是进程可执行文件的路径

        LPTSTR  lpFilename,  //接收路径的字符串缓冲区

        DWORD  nSize  //缓冲区的大小

      );

    #include <Psapi.h>
    #pragma comment (lib,"Psapi.lib")
    
    ...
    
    HANDLE h_Process=OpenProcess(PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,FALSE,ProcessID);
    
    CString strPath;
    if(!GetModuleFileNameEx(h_Process,NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH+1))
    
       return false;
    
    ...

    如果想要获取指定文件所在的目录可以使用MFC中CFile类的成员函数:CFile::GetFilePath();

    HMODULE GetModuleHandle(LPCTSTR lpModuleName); 返回加载到当前进程地址空间的可执行文件或DLL文件的句柄,若参数为NULL,则返回当前进程的句柄(当前应用程序实例句柄)。

  • 相关阅读:
    8.3.ZooKeeper集群安装配置
    Shiro Demo 示例(SpringMVC-Mybatis-Shiro-redis)
    Shiro 学习
    JavaWeb项目:Shiro实现简单的权限控制(整合SSM)
    权限管理——权限模型和权限控制
    Java程序员面试题集(151-180)
    Java面试题集(136-150)
    Java面试题集(131-135)
    Java面试题集(116-135)
    Java面试题集(1-50)
  • 原文地址:https://www.cnblogs.com/zhouwanqiu/p/8513080.html
Copyright © 2011-2022 走看看