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

📄 如何编写控制面板程序.htm

📁 我在网上收集的一些有关vcDLL编程的文章。
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  lang=EN-US> <br>
  <br>
  <br>
  <br>
  </span>程序清单:<span lang=EN-US> <br>
  <br>
  // CPL.cpp : Defines the initialization routines for the DLL. <br>
  <br>
  // <br>
  <br>
  #include &quot;stdafx.h&quot; <br>
  <br>
  #include <br>
  <br>
  #include <br>
  <br>
  #include <br>
  <br>
  #include &quot;resource.h&quot; <br>
  <br>
  #ifdef _DEBUG <br>
  <br>
  #define new DEBUG_NEW <br>
  <br>
  #undef THIS_FILE <br>
  <br>
  static char THIS_FILE[] = __FILE__; <br>
  <br>
  #endif <br>
  <br>
  <br>
  <br>
  static AFX_EXTENSION_MODULE CPLDLL = { NULL, NULL }; <br>
  <br>
  HINSTANCE hinst = NULL; <br>
  <br>
  BOOL FAR PASCAL CPLDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM
  lParam); <br>
  <br>
  //</span>控制面板接口函数<span lang=EN-US>CPlApplet <br>
  <br>
  extern &quot;C&quot; int APIENTRY CPlApplet(HWND hwndCPL, UINT uMsg, LPARAM
  lParam1, LPARAM lParam2); <br>
  <br>
  extern &quot;C&quot; int APIENTRY <br>
  <br>
  DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) <br>
  <br>
  { <br>
  <br>
  // Remove this if you use lpReserved <br>
  <br>
  UNREFERENCED_PARAMETER(lpReserved); <br>
  <br>
  if (dwReason == DLL_PROCESS_ATTACH) <br>
  <br>
  { <br>
  <br>
  TRACE0(&quot;CPL.DLL Initializing!&quot;); <br>
  <br>
  // Extension DLL one-time initialization <br>
  <br>
  if (!AfxInitExtensionModule(CPLDLL, hInstance)) <br>
  <br>
  return 0; <br>
  <br>
  // Insert this DLL into the resource chain <br>
  <br>
  // NOTE: If this Extension DLL is being implicitly linked to by <br>
  <br>
  // an MFC Regular DLL (such as an ActiveX Control) <br>
  <br>
  // instead of an MFC application, then you will want to <br>
  <br>
  // remove this line from DllMain and put it in a separate <br>
  <br>
  // function exported from this Extension DLL. The Regular DLL <br>
  <br>
  // that uses this Extension DLL should then explicitly call that <br>
  <br>
  // function to initialize this Extension DLL. Otherwise, <br>
  <br>
  // the CDynLinkLibrary object will not be attached to the <br>
  <br>
  // Regular DLL's resource chain, and serious problems will <br>
  <br>
  // result. <br>
  <br>
  new CDynLinkLibrary(CPLDLL); <br>
  <br>
  } <br>
  <br>
  else if (dwReason == DLL_PROCESS_DETACH) <br>
  <br>
  { <br>
  <br>
  TRACE0(&quot;CPL.DLL Terminating!&quot;); <br>
  <br>
  // Terminate the library before destructors are called <br>
  <br>
  AfxTermExtensionModule(CPLDLL); <br>
  <br>
  } <br>
  <br>
  hinst = hInstance; <br>
  <br>
  return 1; // ok <br>
  <br>
  } <br>
  <br>
  int APIENTRY CPlApplet(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM
  lParam2) <br>
  <br>
  { <br>
  <br>
  int i; <br>
  <br>
  LPCPLINFO lpCPlInfo; <br>
  <br>
  i = (int) lParam1; <br>
  <br>
  switch (uMsg) { <br>
  <br>
  case CPL_INIT: // first message, sent once <br>
  <br>
  return TRUE; <br>
  <br>
  case CPL_GETCOUNT: // second message, sent once <br>
  <br>
  return 1; <br>
  <br>
  break; <br>
  <br>
  case CPL_INQUIRE: // third message, sent once per application <br>
  <br>
  lpCPlInfo = (LPCPLINFO) lParam2; <br>
  <br>
  lpCPlInfo-&gt;lData = 0; <br>
  <br>
  lpCPlInfo-&gt;idIcon =IDI_ICON1; <br>
  <br>
  lpCPlInfo-&gt;idName = IDS_STRING1; <br>
  <br>
  lpCPlInfo-&gt;idInfo = IDS_STRING1; <br>
  <br>
  break; <br>
  <br>
  case CPL_DBLCLK: // application icon double-clicked <br>
  <br>
  FARPROC lpProcDlg; <br>
  <br>
  lpProcDlg = (FARPROC)MakeProcInstance(CPLDlg,hinst); <br>
  <br>
  DialogBox(hinst,MAKEINTRESOURCE(IDD_DIALOG1),hwndCPL,(DLGPROC)lpProcDlg); <br>
  <br>
  FreeProcInstance(lpProcDlg); <br>
  <br>
  break; <br>
  <br>
  case CPL_STOP: // sent once per application before CPL_EXIT <br>
  <br>
  break; <br>
  <br>
  case CPL_EXIT: // sent once before FreeLibrary is called <br>
  <br>
  break; <br>
  <br>
  default: <br>
  <br>
  break; <br>
  <br>
  } <br>
  <br>
  return 0; <br>
  <br>
  } <br>
  <br>
  <br>
  <br>
  BOOL FAR PASCAL CPLDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  <br>
  <br>
  { <br>
  <br>
  DWORD dataType; <br>
  <br>
  BYTE data[100]; <br>
  <br>
  DWORD reserved; <br>
  <br>
  DWORD size; <br>
  <br>
  HKEY hKey = HKEY_CURRENT_USER; <br>
  <br>
  char
  ValueName[]=&quot;Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun&quot;;
  <br>
  <br>
  switch(message) <br>
  <br>
  { <br>
  <br>
  case WM_INITDIALOG: <br>
  <br>
  size = 4; <br>
  <br>
  if(RegQueryValueEx(HKEY_CURRENT_USER,ValueName,&amp;reserved,&amp;dataType,data,&amp;size)
  <br>
  <br>
  == ERROR_SUCCESS ) <br>
  <br>
  { <br>
  <br>
  if( data[0] == 0x95 ) <br>
  <br>
  SendDlgItemMessage(hDlg,IDC_CHECK1,BM_SETCHECK,1,0L); <br>
  <br>
  else <br>
  <br>
  SendDlgItemMessage(hDlg,IDC_CHECK1,BM_SETCHECK,0,0L); <br>
  <br>
  } <br>
  <br>
  return TRUE; <br>
  <br>
  case WM_COMMAND: <br>
  <br>
  switch(wParam) <br>
  <br>
  { <br>
  <br>
  case IDOK: <br>
  <br>
  if(SendDlgItemMessage(hDlg,IDC_CHECK1,BM_GETCHECK,0,0L) == BST_CHECKED) <br>
  <br>
  data[0] = 0x95; <br>
  <br>
  else <br>
  <br>
  data[0] = 0xb5; <br>
  <br>
  data[1] =data[2] = data[3] = 0; <br>
  <br>
  size =4; <br>
  <br>
  reserved = 0; <br>
  <br>
  dataType = REG_BINARY; <br>
  <br>
  RegSetValueEx(HKEY_CURRENT_USER,ValueName,reserved,dataType,(BYTE*)data,size);
  <br>
  <br>
  EndDialog(hDlg,TRUE); <br>
  <br>
  break; <br>
  <br>
  case IDCANCEL: <br>
  <br>
  EndDialog(hDlg,FALSE); <br>
  <br>
  break; <br>
  <br>
  } <br>
  <br>
  break; <br>
  <br>
  } <br>
  <br>
  return FALSE; <br>
  <br>
  }<o:p></o:p></span></span></p>
  </td>
  <td style='padding:0cm 0cm 0cm 0cm'>
  <p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
  lang=EN-US style='font-size:10.0pt;mso-font-kerning:0pt'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td style='padding:0cm 0cm 0cm 0cm'>
  <p class=MsoNormal align=left style='text-align:left;mso-pagination:widow-orphan'><span
  lang=EN-US style='font-size:10.0pt;mso-font-kerning:0pt'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
</table>

</div>

<p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>

</div>

</body>

</html>

⌨️ 快捷键说明

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