找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 小龙龙

[分享] 批量删除教育版程序

[复制链接]

已领礼包: 344个

财富等级: 日进斗金

发表于 2016-8-8 16:58:38 | 显示全部楼层
aeo 发表于 2016-8-2 15:22
今天才看到你的回复 。。。。。。。。

谁帮着下下来,谢谢,不是那边的会员.

代码转帖过来:
  1. // (C) Copyright 1990-2002 by Autodesk, Inc.
  2. //
  3. // Permission to use, copy, modify, and distribute this software in
  4. // object code form for any purpose and without fee is hereby granted,
  5. // provided that the above copyright notice appears in all copies and
  6. // that both that copyright notice and the limited warranty and
  7. // restricted rights notice below appear in all supporting
  8. // documentation.
  9. //
  10. // AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
  11. // AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
  12. // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
  13. // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
  14. // UNINTERRUPTED OR ERROR FREE.
  15. //
  16. // Use, duplication, or disclosure by the U.S. ** is subject to
  17. // restrictions set forth in FAR 52.227-19 (Commercial Computer
  18. // Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
  19. // (Rights in Technical Data and Computer Software), as applicable.
  20. //

  21. //-----------------------------------------------------------------------------
  22. //------ StdAfx.cpp : source file that includes just the standard includes
  23. //------  StdAfx.pch will be the pre-compiled header
  24. //------  StdAfx.obj will contain the pre-compiled type information
  25. //-----------------------------------------------------------------------------
  26. #include "StdAfx.h"
  27. bool RemoveEduPlotStamp_Force(const AcDbDatabase* pDb)
  28. {
  29.   DWORD d1=(DWORD)pDb;
  30. #ifdef _WIN64
  31.   d1+=0x00000008;
  32. #else
  33.   d1+=0x00000004;
  34. #endif
  35.   void** pVoid=(void**)d1;
  36.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  37.   DWORD d2=(DWORD)pVoid1;
  38.   int i=0x00000600;
  39.   while(true)
  40.   {
  41.     if(!pDb->isEMR())
  42.     {
  43.       return true;
  44.     }
  45.     i++;
  46.     if(i>=0x00000fff)
  47.     {
  48.       return false;
  49.     }
  50.     DWORD d3=(DWORD)pVoid1;
  51.     d3+=i;
  52.     void* pVoid4=(void*)d3;
  53.     DWORD* pVoid5=(DWORD*)pVoid4;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  54.     if((*pVoid5)==0x01)
  55.     {
  56.       *pVoid5=0x00;
  57.       if(!pDb->isEMR())
  58.     {
  59. #if _ARXDEBUG
  60.       acutPrintf(_T("\r\n指针偏移;0x%x"),i);
  61. #endif
  62.       return true;
  63.     }
  64.       else
  65.       {
  66.         *pVoid5=0x01;
  67.       }
  68.     }

  69.   }
  70.   return false;
  71. }
  72. #if _MSC_VER>=1600
  73. #ifdef _WIN64
  74. bool RemoveEduPlotStamp_13(const AcDbDatabase* pDb)
  75. {
  76.   DWORD d1=(DWORD)pDb;
  77.   d1+=0x00000008;
  78.   void** pVoid=(void**)d1;
  79.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  80.   DWORD d2=(DWORD)pVoid1;
  81.   d2+=0x00000ba8;//取得mpImpDb内部的是否是教育版的标志
  82.   void* pVoid2=(void*)d2;
  83.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  84.   if((*pVoid3)==0x01)
  85.   {
  86.     *pVoid3=0x00;
  87.     return true;
  88.   }
  89.   else
  90.   {
  91.     return false;
  92.   }
  93. }
  94. #else
  95. bool RemoveEduPlotStamp_13(const AcDbDatabase* pDb)
  96. {
  97.   DWORD d1=(DWORD)pDb;
  98.   d1+=0x00000004;
  99.   void** pVoid=(void**)d1;
  100.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  101.   DWORD d2=(DWORD)pVoid1;
  102.   d2+=0x00000884;//取得mpImpDb内部的是否是教育版的标志
  103.   void* pVoid2=(void*)d2;
  104.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  105.   if((*pVoid3)==0x01)
  106.   {
  107.     *pVoid3=0x00;
  108.     return true;
  109.   }
  110.   else
  111.   {
  112.     return false;
  113.   }
  114. }
  115. #endif
  116. #elif _MSC_VER>=1500
  117. #ifdef _WIN64
  118. bool RemoveEduPlotStamp_10(const AcDbDatabase* pDb)
  119. {
  120.   DWORD d1=(DWORD)pDb;
  121.   d1+=0x00000008;
  122.   void** pVoid=(void**)d1;
  123.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  124.   DWORD d2=(DWORD)pVoid1;
  125.   d2+=0x00000b80;//取得mpImpDb内部的是否是教育版的标志
  126.   void* pVoid2=(void*)d2;
  127.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  128.   if((*pVoid3)==0x01)
  129.   {
  130.     *pVoid3=0x00;
  131.     return true;
  132.   }
  133.   else
  134.   {
  135.     return false;
  136.   }
  137. }
  138. #else
  139. bool RemoveEduPlotStamp_10(const AcDbDatabase* pDb)
  140. {
  141.   DWORD d1=(DWORD)pDb;
  142.   d1+=0x00000004;
  143.   void** pVoid=(void**)d1;
  144.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  145.   DWORD d2=(DWORD)pVoid1;
  146.   d2+=0x0000086c;//取得mpImpDb内部的是否是教育版的标志
  147.   void* pVoid2=(void*)d2;
  148.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  149.   if((*pVoid3)==0x01)
  150.   {
  151.     *pVoid3=0x00;
  152.     return true;
  153.   }
  154.   else
  155.   {
  156.     return false;
  157.   }
  158. }
  159. #endif
  160. #elif _MSC_VER>=1400
  161. bool RemoveEduPlotStamp_09(const AcDbDatabase* pDb)
  162. {
  163.   return false;
  164. }
  165. //CAD08去除教育版标记
  166. bool RemoveEduPlotStamp_08(const AcDbDatabase* pDb)
  167. {
  168.   DWORD d1=(DWORD)pDb;
  169.   d1+=0x00000004;
  170.   void** pVoid=(void**)d1;
  171.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  172.   DWORD d2=(DWORD)pVoid1;
  173.   d2+=0x00000824;//取得mpImpDb内部的是否是教育版的标志
  174.   void* pVoid2=(void*)d2;
  175.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  176.   if((*pVoid3)==0x01)
  177.   {
  178.     *pVoid3=0x00;
  179.     return true;
  180.   }
  181.   else
  182.   {
  183.     return false;
  184.   }
  185. }
  186. //CAD08去除教育版标记
  187. bool RemoveEduPlotStamp_07(const AcDbDatabase* pDb)
  188. {
  189.   DWORD d1=(DWORD)pDb;
  190.   d1+=0x00000004;
  191.   void** pVoid=(void**)d1;
  192.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  193.   DWORD d2=(DWORD)pVoid1;
  194.   d2+=0x000007dc;//取得mpImpDb内部的是否是教育版的标志
  195.   void* pVoid2=(void*)d2;
  196.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  197.   if((*pVoid3)==0x01)
  198.   {
  199.     *pVoid3=0x00;
  200.     return true;
  201.   }
  202.   else
  203.   {
  204.     return false;
  205.   }
  206. }
  207. #else
  208. //CAD06去除教育版标记
  209. bool RemoveEduPlotStamp_06(const AcDbDatabase* pDb)
  210. {
  211.   DWORD d1=(DWORD)pDb;
  212.   d1+=0x00000004;
  213.   void** pVoid=(void**)d1;
  214.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  215.   DWORD d2=(DWORD)pVoid1;
  216.   d2+=0x000006d4;//取得mpImpDb内部的是否是教育版的标志
  217.   void* pVoid2=(void*)d2;
  218.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  219.   if((*pVoid3)==0x01)
  220.   {
  221.     *pVoid3=0x00;
  222.     return true;
  223.   }
  224.   else
  225.   {
  226.     return false;
  227.   }
  228. }
  229. //CAD05去除教育版标记
  230. bool RemoveEduPlotStamp_05(const AcDbDatabase* pDb)
  231. {
  232.   DWORD d1=(DWORD)pDb;
  233.   d1+=0x00000004;
  234.   void** pVoid=(void**)d1;
  235.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  236.   DWORD d2=(DWORD)pVoid1;
  237.   d2+=0x000006d4;//取得mpImpDb内部的是否是教育版的标志
  238.   void* pVoid2=(void*)d2;
  239.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  240.   if((*pVoid3)==0x01)
  241.   {
  242.     *pVoid3=0x00;
  243.     return true;
  244.   }
  245.   else
  246.   {
  247.     return false;
  248.   }
  249. }
  250. //CAD04去除教育版标记
  251. bool RemoveEduPlotStamp_04(const AcDbDatabase* pDb)
  252. {
  253.   DWORD d1=(DWORD)pDb;
  254.   d1+=0x00000004;
  255.   void** pVoid=(void**)d1;
  256.   void* pVoid1=*pVoid;//取到内部的mpImpDb地址
  257.   DWORD d2=(DWORD)pVoid1;
  258.   d2+=0x000006d4;//取得mpImpDb内部的是否是教育版的标志
  259.   void* pVoid2=(void*)d2;
  260.   byte* pVoid3=(byte*)pVoid2;//转化为DWORD,0x00000000:非教育版,0x00000001:教育版
  261.   if((*pVoid3)==0x01)
  262.   {
  263.     *pVoid3=0x00;
  264.     return true;
  265.   }
  266.   else
  267.   {
  268.     return false;
  269.   }
  270. }
  271. #endif

  272. bool Split(CString& src, CString token, CStringArray& resultArray,bool ingoreEmptyString=false)
  273. {
  274.   if(src.IsEmpty())
  275.   {
  276.     return true;
  277.   }
  278.   int tokenSize = token.GetLength();
  279.   CString result;
  280.   CString srcouceStr = src;
  281.   while (true)
  282.   {
  283.     int index = srcouceStr.Find(token);
  284.     if (index == 0)
  285.     {
  286.       result = "";
  287.     }
  288.     else if (index < 0)
  289.     {
  290.       if((!ingoreEmptyString)||(!srcouceStr.IsEmpty()))
  291.       {
  292.         resultArray.Add(srcouceStr);
  293.       }
  294.       return true;
  295.     }
  296.     else
  297.     {
  298.       result = srcouceStr.Left(index);
  299.     }
  300.     if((!ingoreEmptyString)||(!result.IsEmpty()))
  301.     {
  302.       resultArray.Add(result);
  303.     }

  304.     int sourceLength = srcouceStr.GetLength();
  305.     srcouceStr = srcouceStr.Right(sourceLength - index - tokenSize);
  306.   }
  307. }
  308. //功能:  指定的字符串是否是合理的长整数(只能处理十进制的)
  309. //参数:  value,指定的字符串
  310. //      nValue,返回长整数型结果
  311. //返回: 是否是合理的长整数
  312. BOOL IsValidLong(const CString value,long &lValue)
  313. {
  314.   bool bNegative=false;//是否是负数
  315.   CString tmpValue=value;
  316.   try
  317.   {
  318.     tmpValue.Trim();
  319.   }
  320.   catch(...)
  321.   {

  322.   }
  323.   int nLen=tmpValue.GetLength();
  324.   if(nLen==0)
  325.     return FALSE;
  326.   TCHAR c=tmpValue.GetAt(0);
  327.   if(c=='-')
  328.   {
  329.     //负数
  330.     bNegative=true;
  331.     if(nLen==1)
  332.     {
  333.       //只有一个负号是不合理的
  334.       return FALSE;
  335.     }
  336.     tmpValue=tmpValue.Right(nLen-1);
  337.     nLen--;
  338.   }
  339.   long lTmpValue=0L;
  340.   c=tmpValue.GetAt(0);
  341.   if(c=='0')
  342.   {
  343.     if(nLen==1)
  344.     {
  345.       lValue=0L;
  346.       return TRUE;
  347.     }
  348.     else
  349.     {
  350.       //第一位是0并且后面还有其它数字认为是不合理的
  351.       return FALSE;
  352.     }
  353.   }
  354.   else if(c>='1'&&c<='9')
  355.   {
  356.     lTmpValue+=lTmpValue*10+c-'0';
  357.     for(int i=1;i<nLen;i++)
  358.     {
  359.       c=tmpValue.GetAt(i);
  360.       if(c>='0'&&c<='9')
  361.       {
  362.         lTmpValue=lTmpValue*10+(c-'0');
  363.       }
  364.       else
  365.       {
  366.         //出现了非数字认为是不合理的
  367.         return FALSE;
  368.       }
  369.     }
  370.   }
  371.   else
  372.   {
  373.     //出现了非数字认为是不合理的
  374.     return FALSE;
  375.   }
  376.   lValue=bNegative?-lTmpValue:lTmpValue;
  377.   return TRUE;
  378. }
  379. int _getHostAppMinorVersion()
  380. {
  381. #if _MSC_VER>=1400
  382.   return acdbHostAppMinorVersion();
  383. #else
  384.   const TCHAR* lpRootKey=acrxProductKey();
  385.   HKEY key = HKEY_LOCAL_MACHINE;
  386.   DWORD acadNum = 0;
  387.   if (RegOpenKeyEx(key, lpRootKey,0,KEY_READ, &key) != ERROR_SUCCESS)
  388.   {
  389.     return -1;
  390.   }
  391.   TCHAR strValue[128+1]={0};
  392.   DWORD dwType;
  393.   DWORD dwCount = sizeof(TCHAR)*128;
  394.   LONG lResult = RegQueryValueEx(key, _T("Release"), NULL, &dwType,
  395.     (LPBYTE)strValue, &dwCount);
  396.   RegCloseKey(key);
  397.   if(lResult != ERROR_SUCCESS)
  398.   {
  399.     return -1;
  400.   }
  401.   CString src(strValue);
  402.   CString token=_T(".");
  403.   CStringArray resultArray;
  404.   Split(src,token,resultArray,true);
  405.   if(resultArray.GetCount()<2)
  406.   {
  407.     return -1;
  408.   }
  409.   CString strMinorVersion=resultArray.GetAt(1);
  410.   long nValue=-1;
  411.   if(!IsValidLong(strMinorVersion,nValue))
  412.   {
  413.     return -1;
  414.   }
  415.   if(nValue<0)
  416.   {
  417.     return -1;
  418.   }
  419.   return nValue;
  420. #endif
  421. }
  422. int Glb_AppMinorVersion=-9999;
  423. int getHostAppMinorVersion()
  424. {
  425.   if(Glb_AppMinorVersion==-9999)
  426.   {
  427.     Glb_AppMinorVersion=_getHostAppMinorVersion();
  428.   }
  429.   return Glb_AppMinorVersion;
  430. }
  431. void RemoveEduPlotStamp(const AcDbDatabase* pDb)
  432. {
  433.   if(pDb==NULL)
  434.   {
  435.     return;
  436.   }
  437.   if(!pDb->isEMR())
  438.   {
  439.     return;
  440.   }
  441.   int nMinorVersion=getHostAppMinorVersion();
  442.   bool rc=false;
  443. #if _MSC_VER>=1600
  444.   if(nMinorVersion==0)
  445.   {
  446.     rc=RemoveEduPlotStamp_13(pDb);
  447.   }
  448. #elif _MSC_VER>=1500
  449.   if(nMinorVersion==0)
  450.   {
  451.     rc=RemoveEduPlotStamp_10(pDb);
  452.   }
  453. #elif _MSC_VER>=1400
  454.   if(nMinorVersion==0)
  455.   {
  456.   rc=RemoveEduPlotStamp_07(pDb);
  457.   }
  458.   else if(nMinorVersion==1)
  459.   {
  460.   rc=RemoveEduPlotStamp_08(pDb);
  461.   }
  462.   else if(nMinorVersion==2)
  463.   {
  464.   rc=RemoveEduPlotStamp_09(pDb);
  465.   }
  466. #else
  467.   if(nMinorVersion==0)
  468.   {
  469.   rc=RemoveEduPlotStamp_04(pDb);
  470.   }
  471.   else if(nMinorVersion==1)
  472.   {
  473.   rc=RemoveEduPlotStamp_05(pDb);
  474.   }
  475.   else if(nMinorVersion==2)
  476.   {
  477.   rc=RemoveEduPlotStamp_06(pDb);
  478.   }
  479. #endif
  480.   if(rc)
  481.   {
  482.     rc=!pDb->isEMR();
  483.   }
  484.   if(rc)
  485.   {
  486.     acutPrintf(_T("\r\n清除教育版标志成功"));
  487.   }
  488.   else
  489.   {
  490.     acutPrintf(_T("\r\n清除教育版标志失败,尝试强制清除"));
  491.     rc=RemoveEduPlotStamp_Force(pDb);
  492.     if(!rc)
  493.     {
  494.       acutPrintf(_T("\r\n清除教育版标志失败,请将您的CAD版本,操作系统版本,32位系统/64位系统,32位CAD/64位CAD发送给作者\r\n邮箱:wdzhangsl@126.com,QQ:245804736"));
  495.     }
  496.     else
  497.     {
  498.       acutPrintf(_T("\r\n强制清除教育版标志成功"));
  499.     }
  500.    
  501.   }
  502. }

点评

有没有办法直接打开图就去掉教育版呢?  详情 回复 发表于 2016-8-8 17:07

评分

参与人数 1D豆 +5 收起 理由
Lisphk + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-8-8 17:07:38 | 显示全部楼层
牢固 发表于 2016-8-8 16:58
代码转帖过来:

有没有办法直接打开图就去掉教育版呢?

点评

//docReactor.h #pragma once class CDocReactor : public AcApDocManagerReactor { public: virtual void documentCreated(AcApDocument* pDoc); virtual void documentActivated(AcApDocument* p  详情 回复 发表于 2016-8-10 10:27
这我就不会了,看别人资料介绍是要修改acdb17.dll动态链接库中的内存地址的值!  详情 回复 发表于 2016-8-8 20:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2016-8-8 20:21:20 | 显示全部楼层
Lisphk 发表于 2016-8-8 17:07
有没有办法直接打开图就去掉教育版呢?

这我就不会了,看别人资料介绍是要修改acdb17.dll动态链接库中的内存地址的值!

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2016-8-8 20:44:08 | 显示全部楼层
Lisphk 发表于 2016-8-8 17:07
有没有办法直接打开图就去掉教育版呢?

监视 Open 命令,预先 readdwg 是否可行?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-8-10 10:27:57 | 显示全部楼层
Lisphk 发表于 2016-8-8 17:07
有没有办法直接打开图就去掉教育版呢?

//docReactor.h

#pragma once

class CDocReactor : public AcApDocManagerReactor
{
public:
    virtual void  documentCreated(AcApDocument* pDoc);
        virtual void  documentActivated(AcApDocument* pDoc);
    virtual void  documentToBeDestroyed(AcApDocument* pDoc);
    virtual void  documentToBeDeactivated(AcApDocument* pDoc);
    virtual void  documentToBeActivated(AcApDocument* pDoc);
};









//docReactor.cpp

#include "stdafx.h"
#include "docReactor.h"



void CDocReactor::documentActivated(AcApDocument* pDoc)
{
       
        if (pDoc!=NULL )
        {
                //AfxMessageBox(_T("1"));
        }

       
}
//
// We need to attach the database reactor to the newly created
// database. We need to delete the previous database reactor as well.
//

void CDocReactor::documentCreated(AcApDocument* pDoc)
{
       
        if (pDoc!=NULL)
        {
                //AfxMessageBox(_T("2"));
        }

}

//
// This deactivation includes a non-Acad window is activated
// so the Acad window is losing focus.
//
void CDocReactor::documentToBeDeactivated(AcApDocument* pDoc)
{
        if (pDoc!=NULL)
        {
                //AfxMessageBox(_T("3"));
        }

}
//
// Obviously, we need to delete the database reactor associated
// with the destroyed doc.
//
void CDocReactor::documentToBeDestroyed(AcApDocument* pDoc)
{
        if (pDoc!=NULL)
        {
                //AfxMessageBox(_T("4"));
        }

}
//
// This one can not be used because it gives the historically
// to be activated document prior to the current action.
//
void CDocReactor::documentToBeActivated(AcApDocument* pDoc)
{
        if (pDoc!=NULL)
        {
                //AfxMessageBox(_T("5"));
        }

}



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 148个

财富等级: 日进斗金

发表于 2019-6-5 13:59:39 | 显示全部楼层
谢谢分享,下载用用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-6-6 22:04:19 | 显示全部楼层
Try to learn ^^
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2020-11-26 08:52:38 | 显示全部楼层
积分不够看不到 要赶紧赚积分了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-21 23:20 , Processed in 0.430752 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表