CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

如何在DLL程序中得到DLL文件所在目录(不是调用者的文件夹目录)

楼主progame(www.progame.org)2003-06-01 18:48:14 在 VC/MFC / 进程/线程/DLL 提问

如:  
  A.dll  
   
  在C:\Dll下  
   
  B.EXE调用A.Dll  
   
  我要在dll代码中得到C:\Dll  
   
  怎么办  
   
  好像是个很简单的问题 问题点数:0、回复次数:9Top

1 楼zfive5(醉马不肖)回复于 2003-06-01 19:08:48 得分 0

GetModuleFile(..)应该可以,我也记不清了,你可以查查msdnTop

2 楼papaya_stone(^_^)shentong(^_^)回复于 2003-06-01 19:17:07 得分 0

GetModuleFileName();  
   
  extern   "C"   int   APIENTRY  
  DllMain(HINSTANCE   hInstance,   DWORD   dwReason,   LPVOID   lpReserved)  
  {  
  //   Remove   this   if   you   use   lpReserved  
  UNREFERENCED_PARAMETER(lpReserved);  
   
  if   (dwReason   ==   DLL_PROCESS_ATTACH)  
  {  
  if   (!AfxInitExtensionModule(ReadScrDLL,   hInstance))  
  return   0;  
   
  TCHAR   exeFullPath[MAX_PATH];  
  GetModuleFileName(g_hInst,exeFullPath,MAX_PATH);  
  AfxMessageBox(exeFullPath);  
   
  new   CDynLinkLibrary(ReadScrDLL);  
  }  
  else   if   (dwReason   ==   DLL_PROCESS_DETACH)  
  {  
  //   Terminate   the   library   before   destructors   are   called  
  AfxTermExtensionModule(ReadScrDLL);  
  }  
  return   1;       //   ok  
  }Top

3 楼papaya_stone(^_^)shentong(^_^)回复于 2003-06-01 19:18:18 得分 0

sorry:  
   
  TCHAR   exeFullPath[MAX_PATH];  
  GetModuleFileName(hInstance,exeFullPath,MAX_PATH);  
  AfxMessageBox(exeFullPath);Top

4 楼progame(www.progame.org)回复于 2003-06-01 20:12:57 得分 0

g_hInst   是从哪来的?Top

5 楼papaya_stone(^_^)shentong(^_^)回复于 2003-06-02 00:08:43 得分 0

应该是hInstance,g_hInst是我自己加的一个全局变量,哈哈。Top

6 楼progame(www.progame.org)回复于 2003-06-02 09:26:40 得分 0

谢谢Top

7 楼sdf123321()回复于 2003-06-02 10:16:33 得分 0

在DLL中调用::GetCurrentDirectory(DWORD,nBufferLen,LPTSTR   lpBuffer);Top

8 楼o_racle(璐璐)回复于 2003-06-02 10:31:10 得分 0

GetModuleFileName();  
  Top

9 楼huangbeyond(校园人渣)回复于 2003-06-02 10:52:03 得分 0

DLL当然可以得到当前路径!  
   
  HINSTANCE   hDll   =   ::GetModuleHandle("xxxx.dll")//xxxxx.dll是你的DLL的文件名  
  char   szPath[MAX_PATH];  
  ::GetModuleFileName(hDll,szPath,MAX_PATH);  
   
  这样,szPath里的就是DLL的文件全路径。比如“c:\aaa\bbb\xxx.dll”,  
  再把“c:\aaa\bbb\xxx.dll”转化为“c:\aaa\bbb\”,我想就非常容易了Top

相关问题

  • 用VB写DHTML的DLL怎么换个文件夹就不行了,HTML不能调用了,怎么回事?
  • 如何获得COOKIES文件夹目录
  • 如何删除文件夹(文件夹包含文件和子目录)
  • “浏览文件夹”对话框是怎么调用的?
  • 怎样调用api修改文件夹图标
  • vB调用系统打开文件夹对话框?
  • 如何调用浏览文件夹对话框
  • 用C#怎样调用在同一个文件夹的程序
  • 调用API:SHBrowseForFolder()选择文件夹总是报错,为什么?
  • 调用API:SHBrowseForFolder()选择文件夹总是报错,为什么?

关键词

  • dll
  • exefullpath
  • 调用
  • readscrdll
  • getmodulefilename
  • dwreason
  • hinstance
  • szpath
  • 得到
  • bbb

得分解答快速导航

  • 帖主:progame

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo