天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 54|回复: 0

判断ARX程序是否加载及加载卸载操作

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
判断ARX程序是否加载及加载卸载操作

[code]https://blog.csdn.net/webtracer/article/details/6962207[/code]

在Arx操作中,经常碰到要判断一个ARX是否被加载了,以及需要在程序中动态加载或者卸载一个ARX程序,于是封装了这几个函数





// 检查arx程序是否加载,格式“arxname.arx”,不要路径名
// 返回:RTNORM-已加载   RTERROR-没加载
int  YgxAcadUtil::IsArxLoaded(const char* appName)
{
char tBuf[80];
size_t appL, tBufL, i;
int retCode;
struct resbuf* rb1, * rb2;
appL = strlen(appName);
for (rb2 = rb1 = acedArxLoaded(); rb2 != NULL; rb2 = rb2->rbnext) {
  if (rb2->restype = RTSTR) {
   retCode = RTNORM;
   strcpy(tBuf, rb2->resval.rstring);
   tBufL = strlen(tBuf);
   if (appL != tBufL) retCode = RTERROR;
   else {
    for (i=0; i<appL; i++) {
     if (toupper(appName[i]) != toupper(tBuf[i])) {
      retCode = RTERROR;
      break;
     }
    }
    if (retCode == RTNORM) break;
    else retCode = RTERROR;
   }
  }
}
acutRelRb(rb1);

return retCode;

}

// 不管arx有没有加载,都可以调用,appName为全路径或在CAD搜索路径范围内
// 正常-RTNORM
int  YgxAcadUtil::ArxLoad(const char* appName)
{
char DriveName[_MAX_DRIVE],PathName[_MAX_PATH],FileName[_MAX_FNAME],Ext[_MAX_EXT];
_splitpath(appName, DriveName, PathName, FileName, Ext);

char szAppname[80];
sprintf(szAppname, "%s.%s", FileName, Ext);
if (RTNORM == YgxAcadUtil::IsArxLoaded(szAppname))
  return RTNORM;
else
  return acedArxLoad(appName);
}

// 不管arx有没有加载,都可以调用,格式“arxname.arx”,不要路径
// 正常-RTNORM
int  YgxAcadUtil::ArxUnload(const char* appname)
{
if (RTNORM == YgxAcadUtil::IsArxLoaded(appname))
  return acedArxUnload(appname);
else return RTNORM;
}

 

 

 

 

判断ARX程序是否加载及加载卸载操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 10:19 , Processed in 0.231664 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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