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

Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k15/k15.1/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge