von eBayer » Do, 18.02.2010 18:19
Hallo Stephan,
ich denke, ich habe die Lösung.......
Schau Dir den folgenden Code mal an.
Die Überlegung ist: wie erkenne ich, daß nach Beendigung meiner Anwendung noch ein Writer oder Calc-Dokument offen ist!
Mit dem unten stehenden Code klappt es, allerdings bleibt die Anwendung durch OO gesperrt.... Du könntest sie also nicht umbenennen oder löschen.
Nach dem schließen des letzten externen Dokuments wird die Anwendung dann von OO freigegeben.
Gruß eBayer
Function CountAllForms ' alle offenen Fenster zählen, nachdem die Anwendung selbst beendet ist - also nach "uno:closeDoc"
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim oDocs As Object, oDoc As Object, oComponents As Object, oDispatch As Object, i As Integer
i = 0
oComponents = StarDesktop.getComponents()
oDocs = oComponents.createEnumeration()
DO WHILE oDocs.hasMoreElements()
ON ERROR resume next
oDoc = oDocs.nextElement()
i = i + 1
' msgbox oDoc.title
LOOP
CountAllForms = i
End Function
----------------------------------------- im Startmodul nach "oDispatch.executeDispatch(oDoc, ".uno:CloseDoc", "", 0, Array())" einfügen.
if CountAllForms() = 0 then ' kein externes Fenster offen
oDispatch.executeDispatch(oDoc, ".uno:CloseWin", "", 0, Array())
end if
Hallo Stephan,
ich denke, ich habe die Lösung.......
Schau Dir den folgenden Code mal an.
Die Überlegung ist: wie erkenne ich, daß nach Beendigung meiner Anwendung noch ein Writer oder Calc-Dokument offen ist!
Mit dem unten stehenden Code klappt es, allerdings bleibt die Anwendung durch OO gesperrt.... Du könntest sie also nicht umbenennen oder löschen.
Nach dem schließen des letzten externen Dokuments wird die Anwendung dann von OO freigegeben.
Gruß eBayer
Function CountAllForms ' alle offenen Fenster zählen, nachdem die Anwendung selbst beendet ist - also nach "uno:closeDoc"
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim oDocs As Object, oDoc As Object, oComponents As Object, oDispatch As Object, i As Integer
i = 0
oComponents = StarDesktop.getComponents()
oDocs = oComponents.createEnumeration()
DO WHILE oDocs.hasMoreElements()
ON ERROR resume next
oDoc = oDocs.nextElement()
i = i + 1
' msgbox oDoc.title
LOOP
CountAllForms = i
End Function
----------------------------------------- im Startmodul nach "oDispatch.executeDispatch(oDoc, ".uno:CloseDoc", "", 0, Array())" einfügen.
if CountAllForms() = 0 then ' kein externes Fenster offen
oDispatch.executeDispatch(oDoc, ".uno:CloseWin", "", 0, Array())
end if