⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 关于vc中的dll的编程.htm

📁 我在网上收集的一些有关vcDLL编程的文章。
💻 HTM
📖 第 1 页 / 共 4 页
字号:
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,它们是</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>:<br>
  <br>
  1.Non-MFC&nbsp;Dlls<br>
  2.Regular&nbsp;Dlls<br>
  3.Extension&nbsp;Dlls&nbsp;Note<br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>翻译措辞不当,故遇到术语是引用原词</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Non-MFC&nbsp;DLL:</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>指的是不用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的类库结构,直接用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>C</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>语言写的</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,其输出的函数一般用的是标准</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>C</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>接口,并能被非</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>或</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>编写的应用程序所调用。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Regular&nbsp;DLL:</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和下述的</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Extension&nbsp;Dlls</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>一样,是用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>类库编写的。明显的特点是在源文件里有一个继承</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>CWinApp</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的类。其又可细分成静态连接到</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和动态连接到</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>上的。但静态连接到</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的动态连接库只被</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>VC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的专业般和企业版所支持。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extension&nbsp;DLL:</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>用来实现从</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>所继承下来的类的重新利用,也就是说,用这种类型的动态连接库,可以用来输出一个从</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>所继承下来的类。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Extension&nbsp;DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>使用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的动态连接版本所创建的,并且它只被用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MFC</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>类库所编写的应用程序所调用。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>各位看到这里如果眼有点花或头有点晕,请别泄气,再看两遍,然后继续往下看,定有收获。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  [1]<br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>这一节介绍</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Non-MFC&nbsp;DLLs</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的编写方法。下面是一个通用的写法:</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  BOOL&nbsp;APIENTRY&nbsp;DllMain(HANDLE&nbsp;hModule,DWORD&nbsp;ul_reason_for_call,LPVOID&nbsp;lpReserved)<br>
  {<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(&nbsp;ul_reason_for_call&nbsp;)&nbsp;<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;DLL_PROCESS_ATTACH:<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.......<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;DLL_THREAD_ATTACH:<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.......<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;DLL_THREAD_DETACH:<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.......<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;DLL_PROCESS_DETACH:<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.......<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TRUE;<br>
  }<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style='mso-bidi-font-size:
  10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:
  Tahoma;mso-bidi-font-family:Tahoma'>每一个</span><span lang=EN-US
  style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>必须有一个入口点,这就象我们用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>C</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>编写的应用程序一样,必须有一个</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>WINMAIN</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数一样。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>在这个示例中,</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DllMain</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是一个缺省的入口函数,你不需要编写自己的</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>入口函数,并用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>linker</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的命令行的参数开关</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>/ENTRY</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>声明。用这个缺省的入口函数就能使动态连接库被调用时得到正确的初始化,当然了,你</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>不要在初始化的时候填写使系统崩溃的代码了。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style='mso-bidi-font-size:
  10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:
  Tahoma;mso-bidi-font-family:Tahoma'>参数中,</span><span lang=EN-US
  style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>hMoudle</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是动态库被调用时所传递来的一个指向自己的句柄</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>(</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>实际上,它是指向</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>_DGROUP</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>段的一个选择符</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>),ul_reason_for_call</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是一个说明动态库被调原因的标志。当进程或线程装入或卸载动态连接库的时候,操作系统调用入口函数,并说明动态连接库被调用的原因。它所有的可能值为:</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  DLL_PROCESS_ATTACH:&nbsp;</span><span style='mso-bidi-font-size:10.5pt;
  font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;
  mso-bidi-font-family:Tahoma'>进程被调用</span><span lang=EN-US style='mso-bidi-font-size:
  10.5pt;font-family:Tahoma'><br>
  DLL_THREAD_ATTACH:&nbsp;</span><span style='mso-bidi-font-size:10.5pt;
  font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;
  mso-bidi-font-family:Tahoma'>线程被调用</span><span lang=EN-US style='mso-bidi-font-size:
  10.5pt;font-family:Tahoma'><br>
  DLL_PROCESS_DETACH:&nbsp;</span><span style='mso-bidi-font-size:10.5pt;
  font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;
  mso-bidi-font-family:Tahoma'>进程被停止</span><span lang=EN-US style='mso-bidi-font-size:
  10.5pt;font-family:Tahoma'><br>
  DLL_THREAD_DETACH:&nbsp;</span><span style='mso-bidi-font-size:10.5pt;
  font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;
  mso-bidi-font-family:Tahoma'>线程被停止</span><span lang=EN-US style='mso-bidi-font-size:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -