🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> 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

Alles zur Programmierung im LibreOffice.
Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Rechner herunterfahren per Makro

Beitrag von Sephan » Mo 1. Jul 2013, 23:24

Ist es möglich per Makro und Button in Base den Rechner herunterzufahren? Über eine kurze Suche konnte ich dazu nichts finden.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Rechner herunterfahren per Makro

Beitrag von F3K Total » Di 2. Jul 2013, 06:27

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
Windows 11: AOO, LO Linux Mint: AOO, LO

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Rechner herunterfahren per Makro

Beitrag von Sephan » Di 2. Jul 2013, 07:31

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.

Benutzeravatar
lorbass
* LO-Experte *
Beiträge: 627
Registriert: Mo 25. Apr 2011, 18:17

Re: Rechner herunterfahren per Makro

Beitrag von lorbass » Di 2. Jul 2013, 18:10

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

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Rechner herunterfahren per Makro

Beitrag von Sephan » Di 2. Jul 2013, 18:14

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 ;)

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Rechner herunterfahren per Makro

Beitrag von Sephan » Do 4. Jul 2013, 17:08

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.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Rechner herunterfahren per Makro

Beitrag von F3K Total » Do 4. Jul 2013, 20:47

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
Windows 11: AOO, LO Linux Mint: AOO, LO

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Rechner herunterfahren per Makro

Beitrag von Sephan » Do 4. Jul 2013, 22:03

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.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Rechner herunterfahren per Makro

Beitrag von F3K Total » Do 4. Jul 2013, 22:46

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

Code: Alles auswählen

ThisComponent
nicht aus eingebetteten Base-Formularen heraus, die haben auch keinen eigenen Speicherpfad. Darum dann

Code: Alles auswählen

ThisDatabaseDocument
verwenden.
Windows 11: AOO, LO Linux Mint: AOO, LO

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Rechner herunterfahren per Makro

Beitrag von Sephan » Do 4. Jul 2013, 23:19

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 ;)


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.



Antworten