天气与日历 切换到窄版

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

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

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
在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 12:42 , Processed in 0.182900 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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