ObjectARX applications can load and unload other ObjectARX applications and obtain a list of which external applications are currently loaded, just as AutoLISP programs can (using arxloaded). The following call loads a program called myapp:
if (acedArxLoad("myapp") != RTERROR) {
// Use acedInvoke() to call functions in "myapp".
}
When your program is finished with myapp, it can unload it by calling acedArxUnload():
acedArxUnload("myapp");
The function acedArxLoaded() can be used to obtain the names of all currently loaded applications, as in the following code:
struct resbuf *rb1, *rb2;
for (rb2 = rb1 = acedArxLoaded(); rb2 != NULL; rb2 = rb2->rbnext) {
if (rb2->restype == RTSTR)
acutPrintf("%s\n", rb2->resval.rstring);
}
acutRelRb(rb1);
You can call the functions acedArxLoaded() and acedArxUnload() in conjunction with each other. The following example unloads all applications except the current one:
struct resbuf *rb1, *rb2;
for (rb2 = rb1 = acedArxLoaded(); rb2 != NULL;
rb2 = rb2->rbnext) {
if (strcmp(ads_appname, rb2->resval.rstring) != 0)
acedArxUnload(rb2->resval.rstring);
}
acutRelRb(rb1);