🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Rechner herunterfahren per Makro
Rechner herunterfahren per Makro
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
Hi,
ohne Angabe des Betriebssystemes?
Für W7 -32 geht z.B. diese Batch-Datei per Makro auszuführen:
Batch(Shutdown.bat):
Die 900 steht für die Zeit in Sekunden bis zum Herunterfahren.
Makro:
R
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
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
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Rechner herunterfahren per Makro
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.

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
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 einSephan hat geschrieben:Cool wäre es, wenn das Makro auch das System erkennen könnte […]

shutdown musst du als root – also mit sudo – starten oder sudoers mit sudo visudo entsprechend anpassen.
Gruß
lorbass
Re: Rechner herunterfahren per Makro
Jep, siehe mein Linklorbass hat geschrieben: shutdown musst du als root – also mit sudo – starten oder sudoers mit sudo visudo entsprechend anpassen.

Und danke für deine Links

Re: Rechner herunterfahren per Makro
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
Hallo Sephan,
Allerdings:
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
um den aktuellen Ordener zu bestimmen, verwende ich meist diesen Code. Wichtig:Keine Sonderzeichen/Leerzeichen im Pfad.Sephan hat geschrieben:Gibt es bei "sfolder =" auch die Möglichkeit relative Pfade zu verwenden?
Code: Alles auswählen
sub S_get_Current_Folder
sFolderUrl =replace(ThisComponent.url,ThisComponent.Title,"")
msgbox sFolderUrl
end sub
Damit wäre ich vorsichtig.Sephan hat geschrieben:... in das gleiche Verzeichnis der Base Datei packen ...
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
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Rechner herunterfahren per Makro
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.
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
Liegt vermutlich am "Startort" des Makros, wenn es in der Base-Datei liegt, kannst Du auch dieses nehmen:
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.
Code: Alles auswählen
sub S_get_Current_Folder
sFolderUrl =replace(ThisDatabasedocument.url,ThisDatabasedocument.Title,"")
msgbox sFolderUrl
end sub
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
Code: Alles auswählen
ThisComponent
Code: Alles auswählen
ThisDatabaseDocument
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Rechner herunterfahren per Makro
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
Hatte es zwar im Internet gesucht, aber leider nichts passendes bzw. funktionierendes zu gefunden. Also Danke dir nochmal

An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.