获取dll路径方法

来源:互联网 发布:淘宝上搜不到电棍 编辑:程序博客网 时间:2024/05/09 21:39

在指纹仪驱动二次开发中,用到的获取dll路径方法以及添加字符串生成新路径。同时要注意unicode。
在C#中就一句话:

string EntryPath = Application.StartupPath.ToArray()[0].ToString() + @":\AISI_DAT..\";
//获取DLL当前路径CString GetMoudulePath(){    CString strRetun = _T("");#ifdef _UNICODE    TCHAR szBuff[MAX_PATH];    //HMODULE module = GetModuleHandle("FPSDLL");     HMODULE module = AfxGetInstanceHandle();    GetModuleFileName(module, szBuff, sizeof(szBuff));    strRetun.Format(_T("%s"), szBuff);#else    //HMODULE module = GetModuleHandle("FPSDLL");     HMODULE module =AfxGetInstanceHandle();    CHAR szBuff[MAX_PATH];     GetModuleFileName(module, szBuff, sizeof(szBuff));     strRetun.Format(_T("%s"),szBuff);#endif     int pos = strRetun.ReverseFind(_T('\\'));    if (pos != -1)    {        strRetun = strRetun.Left(pos);    }    return strRetun;}char* getpath(char* relativepath){    //获取dll文件所在路径 (!!!!收藏!!)    CString dllpath = GetMoudulePath();    dllpath += relativepath; "";    //CString 是取决于你工程使用的是什么字节类型它就是什么类型的.    //如果你使用的是非宽字节, 则CString::GetBuffer() 是 const char * 类型的    //如果你使用的是宽字节, 则CString::GetBuffer() 是 const wchar_t* 类型的 这时你要用WideCharToMultiByte进行转换。    //将CString转换为char*(!!!!)    int nLength = dllpath.GetLength();    int nBytes = WideCharToMultiByte(CP_ACP, 0, dllpath, nLength, NULL, 0, NULL, NULL);    char* filepath = new char[nBytes + 1];    memset(filepath, 0, nLength + 1);    WideCharToMultiByte(CP_OEMCP, 0, dllpath, nLength, filepath, nBytes, NULL, NULL);    filepath[nBytes] = 0;    return filepath;}
0 0
原创粉丝点击