von Toxitom » Di, 27.09.2005 14:18
Hey Hurby,
..wie ich alle aktiven Anwendungen auslesen ...
Hmm, ich hoffe, du meinst nur die aktiven OOo Anwendungen? Das geht, wenn du aber alle auf dem Rechner aktiven Anwendungen möchtest - da weiss ich dann nicht weiter.
Handelt es sich um die aktiven OOo Anwendungen, so zitier ich mal aus meinem neuen Basic-Buch, das diverse Abhandlungen über das Problm enthält:
Code: Alles auswählen
Sub AlleAktivenApplikationen
on error resume next
DIM oComp as object, oDocs as Object, oDoc as Object, s$
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oComp = Stardesktop.getComponents()
oDocs = oComp.createEnumeration()
Do While oDocs.hasmoreElements()
oDoc = oDocs.nextElement()
s = s & getdoctype(oDoc) & chr(10)
loop
msgbox s, 0, "offene Anwendungen"
End Sub
Dieses Makro listet dir alle aktiven Applikationen im Klartext auf - du brauchst allerdings noch dieses Makro:
Code: Alles auswählen
function getDocType(optional oDoc) as String
on Error goto Oops
if isMissing(oDoc) then oDoc = ThisComponent
If oDoc.supportsService("com.sun.star.text.TextDocument") Then
getDocType = "Writer Dokument"
ElseIf oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") Then
getDocType = "Calc Dokument"
ElseIf oDoc.supportsService("com.sun.star.drawing.DrawingDocument") Then
getDocType = "Draw Dokument"
ElseIf oDoc.supportsService("com.sun.star.presentation.PresentationDocument") Then
getDocType = "Impress Dokument"
ElseIf oDoc.supportsService("com.sun.star.formula.FormulaProperties") Then
getDocType = "Formel Dokument"
ElseIf oDoc.supportsService("com.sun.star.sdb.DatabaseDocument") Then
getDocType = "Datenbank Dokument"
ElseIf oDoc.supportsService("com.sun.star.script.BasicIDE") Then
getDocType = "Basic IDE"
Else
getDocType = "unbekannt"
End if
oops:
if Err <> 0 Then getDocType = "unbekannt"
On error goto 0
end function
Allerdings: Manche Applikationen werden als "unbekannt" ausgegeben (zum Beispiel ein geöffnetes Hilfe-Fenster). Dann kannst du natürlich auch alle aktiven Frames nutzen - und die Titeleigenschaft auslesen:
Code: Alles auswählen
sub AlleFrames
Dim oFrames as object, oFrame as object, i%, s$
oFrames = StarDesktop.getFrames()
For i = 1 to oFrames.getcount()
oFrame = oFrames.getByIndex(i-1)
s = s & CStr(i-1) & " : " & oFrame.title & CHR$(10)
next
msgbox s, 0, "Alle Frames - Titel"
end sub
Und über die Frames (Fenster) hast du dann auch die Möglichkeit, Rückschlüsse zu ziehen. Brauchst du sicher die Applikationen, nimm Makro 1.
Gruss
Thomas
Hey Hurby,
[quote]..wie ich alle aktiven Anwendungen auslesen ...[/quote]
Hmm, ich hoffe, du meinst nur die aktiven OOo Anwendungen? Das geht, wenn du aber alle auf dem Rechner aktiven Anwendungen möchtest - da weiss ich dann nicht weiter.
Handelt es sich um die aktiven OOo Anwendungen, so zitier ich mal aus meinem neuen Basic-Buch, das diverse Abhandlungen über das Problm enthält:
[code]Sub AlleAktivenApplikationen
on error resume next
DIM oComp as object, oDocs as Object, oDoc as Object, s$
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oComp = Stardesktop.getComponents()
oDocs = oComp.createEnumeration()
Do While oDocs.hasmoreElements()
oDoc = oDocs.nextElement()
s = s & getdoctype(oDoc) & chr(10)
loop
msgbox s, 0, "offene Anwendungen"
End Sub[/code]
Dieses Makro listet dir alle aktiven Applikationen im Klartext auf - du brauchst allerdings noch dieses Makro:
[code]function getDocType(optional oDoc) as String
on Error goto Oops
if isMissing(oDoc) then oDoc = ThisComponent
If oDoc.supportsService("com.sun.star.text.TextDocument") Then
getDocType = "Writer Dokument"
ElseIf oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") Then
getDocType = "Calc Dokument"
ElseIf oDoc.supportsService("com.sun.star.drawing.DrawingDocument") Then
getDocType = "Draw Dokument"
ElseIf oDoc.supportsService("com.sun.star.presentation.PresentationDocument") Then
getDocType = "Impress Dokument"
ElseIf oDoc.supportsService("com.sun.star.formula.FormulaProperties") Then
getDocType = "Formel Dokument"
ElseIf oDoc.supportsService("com.sun.star.sdb.DatabaseDocument") Then
getDocType = "Datenbank Dokument"
ElseIf oDoc.supportsService("com.sun.star.script.BasicIDE") Then
getDocType = "Basic IDE"
Else
getDocType = "unbekannt"
End if
oops:
if Err <> 0 Then getDocType = "unbekannt"
On error goto 0
end function [/code]
Allerdings: Manche Applikationen werden als "unbekannt" ausgegeben (zum Beispiel ein geöffnetes Hilfe-Fenster). Dann kannst du natürlich auch alle aktiven Frames nutzen - und die Titeleigenschaft auslesen:
[code]sub AlleFrames
Dim oFrames as object, oFrame as object, i%, s$
oFrames = StarDesktop.getFrames()
For i = 1 to oFrames.getcount()
oFrame = oFrames.getByIndex(i-1)
s = s & CStr(i-1) & " : " & oFrame.title & CHR$(10)
next
msgbox s, 0, "Alle Frames - Titel"
end sub [/code]
Und über die Frames (Fenster) hast du dann auch die Möglichkeit, Rückschlüsse zu ziehen. Brauchst du sicher die Applikationen, nimm Makro 1.
Gruss
Thomas