Benutzer-Werkzeuge

Webseiten-Werkzeuge


k15:k15.1:start

15.1 Klasse Desktop (gb.desktop)

Die Klasse Desktop der gleichnamigen Komponente erlaubt Ihnen auf der Basis der xdg-utils-Skripte des Portland-Projekts die Verwendung von auf den Desktop bezogenen Routinen. Die Anzahl der Eigenschaften und Methoden ist überschaubar. Ausgewählte Eigenschaften und Methoden werden jeweils in einer Tabelle aufgeführt und beschrieben:

EigenschaftTypBeschreibung
ActiveWindow IntegerDas aktive aktuelle Top-Level-Fenster wird zurückgegeben oder gesetzt.
CountIntegerDie Anzahl virtueller Desktops wird zurückgegeben oder gesetzt.
CurrentIntegerDie Nummer des aktuellen Desktops wird zurückgegeben oder gesetzt.
Passwords_DesktopPasswordsGibt ein virtuelles Objekt zurück. Gegenwärtig sind weder Eigenschaften (außer Key) noch Methoden bekannt.
PathStringGibt den Pfad zum Desktop-Verzeichnis zurück
RootWindowIntegerGibt den X11-Handle des Root-Fensters zurück
ScreenSaver_Desktop_ScreenSaverManagt den Bildschirmschoner
ShowingBooleanBei TRUE werden alle Fenster minimiert und Sie können den Desktop sehen
TypeStringGibt den Namen des aktuellen Desktops zurück (KDE, KDE4, GNOME, XFCE oder ? für einen unbekannten Desktop)
Windows_Desktop_WindowsGibt ein virtuelles Objekt zurück, das eine Liste aller Top-Level-Fenster repräsentiert

Tabelle 15.1.1: Übersicht zu Eigenschaften der Klasse Desktop (gb.desktop)

Die virtuelle Klasse _Desktop_ScreenSaver erlaubt Ihnen die Manipulation des Bildschirmschoners und hat die folgende Eigenschaft:

_Desktop_ScreenSaver.Enabled → Gibt TRUE zurück, wenn der Bildschirmschoner eingeschaltet ist.

Es folgt eine Aufzählung der Methoden der virtuellen Klasse _Desktop_ScreenSaver und eine kurze Erläuterung der ausgelösten Aktion:

  • _Desktop_ScreenSaver.Activate – Aktiviert den Bildschirmschoner sofort
  • _Desktop_ScreenSaver.Reset – Deaktiviert den Bildschirmschoner sofort
  • _Desktop_ScreenSaver.Lock – Sperrt den Bildschirmschoner sofort (→ Freischaltung Passwort)
  • _Desktop_ScreenSaver.Resume – Bildschirmschoner-Funktion wird aktiviert
  • _Desktop_ScreenSaver.Suspend – Bildschirmschoner-Funktion wird de-aktiviert

Eine kurze Beschreibung der Methoden der Klasse Desktop finden Sie in der folgenden Tabelle, der u.a. eine ausführliche Darstellung ausgewählter Methoden in weiteren (Unter-)Kapiteln folgt:

1x1NMethodeBeschreibung
1FindWindow ( [ Title As String, Application As String, Role As String ] ) As Integer[]Es werden alle X11-Top-Level-Fenster in einem Array zurückgegeben.
2GetFileIcon (Path As String, Size As Integer [ , Preview As Boolean ] ) As PictureFür Preview gleich False wird ein Icon vom Typ Picture von der spezifizierten Datei zurückgegeben.
3Open (URL As String [ ,Wait AsBoolean ])Öffnet eine Datei oder eine URL in der zugewiesenen Standard-Anwendung
4OpenTerminal ( [ Dir As String ] )Öffnet eine Terminal in der aktuellen Desktop-Umgebung. Es kann optional ein Start-Verzeichnis angegeben werden.
5RunAsRoot ( Command As String )Führt den angegebenen Befehl aus. Es wird das Root-Passwort in einem mit dem Desktop korrespondierenden Terminal angefordert.
6SendKeys ( Keys As String )Es wird ein Tastendruck oder eine Kombination von Tasten generiert. Keys ist eine Liste von nacheinander zu generierenden Tasten.
7SendMail ( To As String[] [ , Cc As String[], Bcc As String[], Subject As String, Body As String, Attachment As String ])Es wird eine EMail aufbereitet mit einer Empfänger-Liste, weiteren Empfängerlisten, dem Betreff, dem Text-Inhalt und einem Anhang.

Tabelle 15.1.2: Übersicht zu Methoden der Klasse Desktop (gb.desktop)

(1) Die Methode FindWindow(..) gibt als Funktionswert ein Array von X11-Fenster-Kennungen zurück. Für die optionalen Parameter in der Methode gilt:

Desktop.FindWindow ( [ Title As String, Application As String, Role As String ] ) As Integer[]

Title ist der Fenster-Titel. Diesen finden Sie in der X11-Fenster-Eigenschaft WM_NAME. Application ist die Fenster-Klasse. Es ist in der Regel der Name der Anwendung, die das Fenster erstellt. Er ist in der X11-Fenster-Eigenschaft WM_CLASS gespeichert. Role ist die Rolle des Fensters. Sie ist in der X11-Fenster-Eigenschaft WM_WINDOW_ROLE gespeichert.

Die Argumente Title, Application und Role sind reguläre Ausdrücke, wie sie im Zusammenhang mit dem LIKE-Operator (→ Kapitel 19.6.3 Exkurs LIKE und Kapitel 8.6 Spezielle Operatoren) definiert sind.

[1] Public Sub GetDTWindowsList()
[2]   Dim iCount As Integer
[3]   Dim DTWindow As DesktopWindow
[4]   Dim aDTWindowsList As Integer[]
[5]   
[6]   txaWindowList.Clear
[7]   aDTWindowsList = Desktop.FindWindow(txbPatternBox.Text)
[8]   lblWindowCount.Text = aDTWindowsList.Count
[9]  For iCount = 0 To aDTWindowsList.Max
[10]      DTWindow = New DesktopWindow(aDTWindowsList[iCount])
[11]      If DTWindow.Id = aDTWindowsList[iCount] Then
[12]         txaWindowList.Text &= Str(iCount + 1) & "\t" & (DTWindow.Desktop + 1) & 
       "      " & DTWindow.Id & "\t" & DTWindow.Name & gb.NewLine
[13]      Endif ' DTWindow.Id = aDTWindowsList[iCount] ?
[14]  Next ' iCount
[15] 
[16]  End ' GetDTWindowsList()
[17] 
[18]  Public Sub btnGetDTWList_Click()
[19]    GetDTWindowsList()
[20]  End ' btnGetDTWList_Click()

Folgende Ergebnisse konnten in einer TextArea angezeigt werden. Zuerst wurde als Suchmuster der reguläre Ausdruck [DGM]* ( → Zeile 7 ) verwendet (Fenstername beginnt mit D, G oder M):

Nummer	Desktop	Desktop.ID		Fenster-Name 
----------------------------------------------------------------------------------------------
1		3      	52428816		DesktopWatcher 0.0.6 - Gambas 3 
2		1      	62914563		GHex 
3		4      	65011850		Mozilla Firefox 
4		3      	37748751		DesktopWatcher 

Anschließend wurde das Suchmuster auf * festgesetzt und ergab folgende, erweiterte Liste von X11-Top-Level-Fenstern:

Nummer	Desktop	Desktop.ID		Fenster-Name 
----------------------------------------------------------------------------------------------
1		0      	23068676		Schreibtisch 
2		3      	52428816		DesktopWatcher 0.0.6 - Gambas 3 
3		1      	62914563		GHex 
4		1      	60817454		Unbenanntes Dokument 1 - gedit 
5		2      	48234565		15.1.odt - LibreOffice Writer 
6		4      	65011850		Mozilla Firefox 
7		3      	37748751		DesktopWatcher 
8		0      	14680084		Unteres Kanten-Panel, ausgedehnt 
9		0      	14680067		Oberes Kanten-Panel, ausgedehnt

(2) Die Methode GetFileIcon(..) gibt das Icon zurück, das der ausgewählten Datei zugeordnet wurde:

Desktop.GetFileIcon (Path As String, Size As Integer [ , Preview As Boolean ] ) As Picture

Path ist der Datei-Pfad. Size ist die Größe des Icons (Pixel). Preview – Der Standardwert des optionalen Arguments ist FALSE und es wird die Icon-Datei vom Typ Picture zurückgegeben.

' Gambas class file
Public picFileIcon As Picture
 
Public Sub Form_Open()
 
  picFileIcon = Desktop.GetFileIcon(User.Home &/ "DesktopWatcher.gambas", 32, False)
' Speicherung des Icons in der globalen Variablen picFileIcon vom Typ Picture
  PictureBox1.W = 72
  PictureBox1.H = PictureBox1.W
  PictureBox1.Stretch = True
  PictureBox1.Picture = Desktop.GetFileIcon(User.Home &/ "Arbeitsfläche/GetFileIcon/
                        GetFileIcon.gambas", 32, False)
End ' Form_Open

(5) Mit der Methode RunAsRoot(..) verbanden viele die Hoffnung, nun recht einfach aus einem Gambas-Programm heraus ein Kommando ausführen zu können, das Root-Rechte erfordert. Die Umsetzung in einem Projekt ist einfach:

Public Sub RunAsRoot(sCommand As String)
  Desktop.RunAsRoot(sCommand)
End ' RunAsRoot(sCommand As String)
 
Public Sub btnRunAsRoot_Click()
  RunAsRoot("apt-get install bluefish")
End ' btnRunAsRoot_Click()

Es öffnet sich ein Terminal-Fenster und man wird zur (verdeckten) Eingabe des Root-Passwortes aufgefordert:

Terminal

Abbildung 15.1.1: Terminal

Aber gegenwärtig (→ 30.11.2014) passiert nach der Eingabe des Root-Passwortes nichts. Das Terminal-Fenster schließt sich und man kehrt zum Programm-Fenster zurück.

Das was es auch schon – zumindest unter Ubuntu 12.04.

Intern wird die Instruktion Exec() verwendet und auf den folgenden Befehl – hier im Zusammenhang mit dem Befehl zur Installation des Programms 'bluefish' – zurückgegriffen:

hans@linux:~$ /tmp/gambas.1000/10857/xdg-utils/xdg-su -c "apt-get install bluefish"

Für die virtuelle Klasse _Desktop_ScreenSaver sowie für die Klasse Desktop mit den u.a. Methoden erfolgen die Beschreibungen und die Vorstellung relevanter Quelltext-Ausschnitte in eigenen Kapiteln:

Virtuelle Klasse _Desktop_ScreenSaver zur Manipulation des Bildschirmschoners Desktop.Open (URL As String [ ,Wait AsBoolean ]) Desktop.OpenTerminal ( [ Dir As String ] ) Desktop.SendKeys ( Keys As String ) Desktop.SendMail ( To As String[] [ …, Subject As String, Body As String, … ] )

Download

Artikel

Download

k15/k15.1/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge