Seite 1 von 1

Aktive Anwendungen auslesen

Verfasst: Di, 27.09.2005 12:07
von Hurby
Hallo erstmal

Kann mir jemand sagen wie ich alle aktiven Anwendungen auslesen und in einer Liste speichern kann???

Danke im voraus
mfg Hurby

Verfasst: Di, 27.09.2005 14:18
von Toxitom
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

Verfasst: Di, 27.09.2005 15:35
von Hurby
Erstmal vielen vielen Dank für die Mühe,

Ehrlich gesagt hatte ich es mit Windowsanwendungen vor, ich wollte auslesen ob die besagte schon geöffnet ist, wenn ja dann nicht neu öffnen sonst schon. Aber deinen Quelltext kann später noch gebrauchen.

Danke nochmal

mfg Hurby