Seite 1 von 4
Rechner herunterfahren per Makro
Verfasst: Mo 1. Jul 2013, 23:24
von Sephan
Ist es möglich per Makro und Button in Base den Rechner herunterzufahren? Über eine kurze Suche konnte ich dazu nichts finden.
Re: Rechner herunterfahren per Makro
Verfasst: Di 2. Jul 2013, 06:27
von F3K Total
Hi,
ohne Angabe des Betriebssystemes?
Für W7 -32 geht z.B. diese Batch-Datei per Makro auszuführen:
Batch(Shutdown.bat):
Code: Alles auswählen
@echo off
cd C:\Windows\System32
C:\Windows\System32\shutdown.exe -s -f -t 900
Die 900 steht für die Zeit in Sekunden bis zum Herunterfahren.
Makro:
Code: Alles auswählen
Sub S_Shutdown_Windows
if msgbox ("Soll Windows heruntergefahren werden?",36,"Shutdown") = 6 then
sfolder = "C:\Users\<Ordner>" 'hierhin wird in der Batch mit CD gewechselt
surl = sfolder + "/Shutdown.bat" '
sfolderpath = convertfromurl(sfolder)
sPath = convertfromurl(surl)
Shell(sPath,4,sfolderpath)
endif
End Sub
R
Re: Rechner herunterfahren per Makro
Verfasst: Di 2. Jul 2013, 07:31
von Sephan
Oh sorry, ich wollte ja erstmal nur wissen, ob es überhaupt geht. Und es handelt sich dabei um ein Ubuntu

Das wird dann einfach so gehen wie hier beschrieben:
http://wiki.ubuntuusers.de/Herunterfahr ... zerrechten
Cool wäre es, wenn das Makro auch das System erkennen könnte und für Windows und Linux dann das passende Makro verwendet.
Re: Rechner herunterfahren per Makro
Verfasst: Di 2. Jul 2013, 18:10
von lorbass
Sephan hat geschrieben:Cool wäre es, wenn das Makro auch das System erkennen könnte […]
Lies in Michael Dannenhöfers
StarBasic / OpenOffice.org Basic FAQ den Abschnitt
2.3.35 Wie kann man das verwendete Betriebssystem auslesen?. Ubuntu sortierst du unter 4 ein
shutdown musst du als
root – also mit
sudo – starten oder
sudoers mit
sudo visudo entsprechend anpassen.
Gruß
lorbass
Re: Rechner herunterfahren per Makro
Verfasst: Di 2. Jul 2013, 18:14
von Sephan
lorbass hat geschrieben:
shutdown musst du als root – also mit sudo – starten oder sudoers mit sudo visudo entsprechend anpassen.
Jep, siehe mein Link
Und danke für deine Links

Re: Rechner herunterfahren per Makro
Verfasst: Do 4. Jul 2013, 17:08
von Sephan
Gibt es bei "sfolder =" auch die Möglichkeit relative Pfade zu verwenden? Zum Beispiel möchte ich die Skripte in das gleiche Verzeichnis der Base Datei packen, die diese Skripte aufruft. Habs grad unter Windows getestet. Ein .\ funktioniert nicht.
Re: Rechner herunterfahren per Makro
Verfasst: Do 4. Jul 2013, 20:47
von F3K Total
Hallo Sephan,
Sephan hat geschrieben:Gibt es bei "sfolder =" auch die Möglichkeit relative Pfade zu verwenden?
um den aktuellen Ordener zu bestimmen, verwende ich meist diesen Code. Wichtig:Keine Sonderzeichen/Leerzeichen im Pfad.
Code: Alles auswählen
sub S_get_Current_Folder
sFolderUrl =replace(ThisComponent.url,ThisComponent.Title,"")
msgbox sFolderUrl
end sub
Allerdings:
Sephan hat geschrieben:... in das gleiche Verzeichnis der Base Datei packen ...
Damit wäre ich vorsichtig.
Wenn Du Base so, wie es kommt, verwendest, wird die eingebettete HSQL-DB erst dann korrekt heruntergefahren, wenn LibreOffice korrekt beendet wurde, du erkennst es an einer .lck Datei, die erst dann verschwindet. Nur zu Speichern reicht nicht.
Fährst Du also das Betriebssystem per Makro herunter, ohne das LibreOffice korrekt beendet wurde, läuftst du Gefahr, Daten zu verlieren, ggf. sogar die ganze Datenbank.
Gruß R
Re: Rechner herunterfahren per Makro
Verfasst: Do 4. Jul 2013, 22:03
von Sephan
Also aktuell mache ich es so. Das Makro ruft die batch/shell Datei auf und diese macht ein verzögertes Shutdown.
Danach folgt in meinem Base Makro dieses hier zum Beenden von LibreOffice:
'Formular schiesen
oDoc = thisComponent.currentController.frame
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch(oDoc, ".uno:CloseDoc", "", 0, Array())
'Oo beenden Version 1 (ohne Shell)
oDoc = ThisDatabaseDocument
oDoc.store()
oDoc.close(True)
'Shell("soffice.exe",1)
EDIT: Bei mir liefert dein Skript nen leeren Wert zurück. Sowohl unter Windows als auch unter Linux.
Re: Rechner herunterfahren per Makro
Verfasst: Do 4. Jul 2013, 22:46
von F3K Total
Liegt vermutlich am "Startort" des Makros, wenn es in der Base-Datei liegt, kannst Du auch dieses nehmen:
Code: Alles auswählen
sub S_get_Current_Folder
sFolderUrl =replace(ThisDatabasedocument.url,ThisDatabasedocument.Title,"")
msgbox sFolderUrl
end sub
Gruß R
EDIT: Funktioniert sowohl unter W7 als auch unter Linux Mint, die aktuelle Datei muss natürlich gespeichert sein, sonst hat sie keinen Pfad.
Ausserdem funktioniert
nicht aus eingebetteten Base-Formularen heraus, die haben auch keinen eigenen Speicherpfad. Darum dann
verwenden.
Re: Rechner herunterfahren per Makro
Verfasst: Do 4. Jul 2013, 23:19
von Sephan
Habs eben auf WinXP und Ubuntu getestet. Läuft.
Hatte es zwar im Internet gesucht, aber leider nichts passendes bzw. funktionierendes zu gefunden. Also Danke dir nochmal
