Ariel, 

Thank you for the quick response.   I have narrowed the continued process down 
to a component.  However, the behavior is strange because I am not really 
opening the component in my code. My code opens a document using 
XComponentLoader::loadComponentFromURL(). I set the "Hidden" property to true 
so the user cannot see it.   The document that is open contains Dynamic Data 
Exchange (DDE) links to another closed document. The code then uses 
XRefreshable interface to refresh all the DDE links found in XIndexAccess.  
Lastly, I export the document using the "ODF Spreadsheet" / "calc8" filter name 
using XStore::storeToURL(). For some reason, this whole process opens (hidden) 
the other document to which the document I am refreshing contains DDE links to, 
even though I do not explicitly open it. Strange. 

In my original query, I did not want to close documents that were not opened by 
my application. (i.e. the user opens it by clicking on the OpenOffice desktop 
icon).   My solution to this point for this issue is: if XEnumeration does have 
more elements, I create an enumeration from XEnumerationAccess, loop through 
it,  get the XComponent interface and XModel for each element, and 
XClose::close() the component if the XModel::getURL() matches a specific URL to 
the implicitly opened document. Lastly, if the enumeration does not have any 
more elements, I terminate the desktop. All of this prevents my application 
from inadvertently closing any documents that were not opened by my 
application.  

Do you have any insight to this behavior or recommendations?

Thanks Again!

Raymond

-----Original Message-----
From: Ariel Constenla-Haile [mailto:arie...@apache.org] 
Sent: Monday, May 06, 2013 5:17 PM
To: api@openoffice.apache.org
Subject: Re: EXTERNAL: Re: soffice process still running

Hi Raymond,

On Mon, May 06, 2013 at 08:14:17PM +0000, Steele, Raymond wrote:
> Ariel,
> 
>  I am having a case were the process continues to run. I appears the  
> the EnumerationAccess does have elements, causing the desktop not to  
> terminate. Is there a way to terminate a specific desktop that was  
> not last open, and not close other desktops?

Do you know what component is still alive? If I recall clearly, you didn't want 
to close all other documents in the first time, but simply terminate the office 
when all documents have been closed.

This enumeration contains all components that where opened using the 
application framework, if this component is keeping the desktop alive, you have 
to close/dispose it. But then, you face your original problem:
you don't want to close documents that are still open. So, first, investigate 
which is the component that is keeping the office alive:

> if (!xEnumerationAccess.hasElements()) {
>     xDesktop.terminate();

Replace this with an if ... else ...
If the enumeration has elements, iterate over them, see if they support 
css.lang.XServiceInfo, and print information about the component; this may get 
you some hint about that last component.


Regards
--
Ariel Constenla-Haile
La Plata, Argentina

---------------------------------------------------------------------
To unsubscribe, e-mail: api-unsubscr...@openoffice.apache.org
For additional commands, e-mail: api-h...@openoffice.apache.org

Reply via email to