[Gelöst] Computer auf Standby & Hibernate setzten
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
[Gelöst] Computer auf Standby & Hibernate setzten
Hallo zusammen, hier spricht ein relativer Pascal-Neuling.
Welche Befehle brauche ich, um unter Linux (Ubuntu 10.10) den Computer in den Ruhezustand oder in den Standby-Modus zu versetzten?
Hintergrund: Möchte ein Programm schreiben, dass mir nach einer bestimmten Zeit den PC Herunterfährt/Neustartet/Standby-Modust/Ruhezustandet
Neustarten und Herunterfahren habe ich schon gelöst.
Für jeden Tipp dankbar ist:
Meister0815
Welche Befehle brauche ich, um unter Linux (Ubuntu 10.10) den Computer in den Ruhezustand oder in den Standby-Modus zu versetzten?
Hintergrund: Möchte ein Programm schreiben, dass mir nach einer bestimmten Zeit den PC Herunterfährt/Neustartet/Standby-Modust/Ruhezustandet
Neustarten und Herunterfahren habe ich schon gelöst.
Für jeden Tipp dankbar ist:
Meister0815
Zuletzt geändert von meister0815 am Di 12. Okt 2010, 23:26, insgesamt 1-mal geändert.
Re: Computer auf Standby & Hibernate setzten
geht es nicht vllt. mit Batch?
Die Batchdatei könntest du mit http://wiki.lazarus.freepascal.org/Executing_External_Programs/de
starten.
oder ansonsten:
Und so das ganze Manuel klicken lassen. warten kannst du mit Sleep(ms);
Ich hoffe ich konnte dir Helfen.
P.S. Code ungetestet
Die Batchdatei könntest du mit http://wiki.lazarus.freepascal.org/Executing_External_Programs/de
starten.
oder ansonsten:
Code: Alles auswählen
mouse.cursorpos:=Point(x,y);//y müsste screen.width-5 sein, und x=5
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
Und so das ganze Manuel klicken lassen. warten kannst du mit Sleep(ms);
Ich hoffe ich konnte dir Helfen.
P.S. Code ungetestet
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!
it´s not a bug, it´s a feature!
Re: Computer auf Standby & Hibernate setzten
Es gab hier mal einen Thread dazu: viewtopic.php?f=16&t=2835
Musst halt schauen, ob das noch aktuell ist.
Musst halt schauen, ob das noch aktuell ist.
- corpsman
- Lazarusforum e. V.
- Beiträge: 1498
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Computer auf Standby & Hibernate setzten
oder du schaust direkt was ich daraus gemacht habe : Wecker Der kann was du willst.
--
Just try it
Just try it
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
Re: Computer auf Standby & Hibernate setzten
Danke an alle für die Hinweise, leider ist das Problem aber noch nicht gelöst.
@felix96:
Mit Batchdatei würde vielleicht klappen, sofern ich eine Batch-Datei dazu finde...
Die manuelle Variante mit Mausklicks kommt nicht in Frage, da das Programm auch auf anderen Rechnern funktionieren soll (die evtl. ihre Buttons woanders haben).
@theo:
Danke für den Link, leider arbeitet die dort angegebene Lösung mit HAL, das m.W. seit Ubuntu 10.10 nicht mehr automatisch mit an Bord ist.
@corpsman:
Verrätst Du mir auch, wie die Hibernate-Routine in deinem Wecker funktioniert? Konnte nirgendwo den Quellcode finden...
@felix96:
Mit Batchdatei würde vielleicht klappen, sofern ich eine Batch-Datei dazu finde...
Die manuelle Variante mit Mausklicks kommt nicht in Frage, da das Programm auch auf anderen Rechnern funktionieren soll (die evtl. ihre Buttons woanders haben).
@theo:
Danke für den Link, leider arbeitet die dort angegebene Lösung mit HAL, das m.W. seit Ubuntu 10.10 nicht mehr automatisch mit an Bord ist.
@corpsman:
Verrätst Du mir auch, wie die Hibernate-Routine in deinem Wecker funktioniert? Konnte nirgendwo den Quellcode finden...
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
Re: Computer auf Standby & Hibernate setzten
Jipieh!!! Hab noch die Lösung gefunden. Der Aufruf über dbus muss lauten:
Code: Alles auswählen
dbus-send --print-reply \
--system \
--dest=org.freedesktop.UPower \
/org/freedesktop/UPower \
org.freedesktop.UPower.Suspend (oder Hibernat)e
- corpsman
- Lazarusforum e. V.
- Beiträge: 1498
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: [Gelöst] Computer auf Standby & Hibernate setzten
Code: Alles auswählen
Procedure PowerManagement(Command: Pchar);
Const
HAL_DBUS_SERVICE = 'org.freedesktop.Hal';
HAL_ROOT_COMPUTER = '/org/freedesktop/Hal/devices/computer';
HAL_DBUS_INTERFACE_POWER = 'org.freedesktop.Hal.Device.SystemPowerManagement';
Var
connection: PDBusConnection;
mess, reply: PDBusMessage;
error: DBusError;
exit_code: integer;
Begin
dbus_error_init(@error);
connection := dbus_bus_get(DBUS_BUS_SYSTEM, @error);
If (dbus_error_is_set(@error) <> 0) Then Begin
//printf("Unable to connect to the daemon bus: %s",error.message);
dbus_error_free(@error);
exit;
End;
mess := dbus_message_new_method_call(HAL_DBUS_SERVICE,
HAL_ROOT_COMPUTER,
HAL_DBUS_INTERFACE_POWER,
Command);
If (mess = Nil) Then Begin
//printf("Out of memory");
exit;
End;
reply := dbus_connection_send_with_reply_and_block(connection,
mess,
-1, // Default DBus timeout
@error);
dbus_message_unref(mess);
If (dbus_error_is_set(@error) <> 0) Then Begin
//printf("Error occured while trying to hibernate: %s", error.message);
dbus_error_free(@error);
exit;
End;
If (reply = Nil) Then Begin
//printf("Message hibernate didn't get a reply");
exit;
End;
// If we have received a reply then there is a return code from the util that HAL executed
Case (dbus_message_get_type(reply)) Of
DBUS_MESSAGE_TYPE_METHOD_RETURN: Begin
dbus_message_get_args(reply, Nil,
DBUS_TYPE_INT32,
[@exit_code,
DBUS_TYPE_INVALID]);
dbus_message_unref(reply);
exit;
End;
DBUS_MESSAGE_TYPE_ERROR: Begin
dbus_message_unref(reply);
//printf("Error occured while trying to hibernate");
End;
End;
dbus_connection_unref(connection);
End;
Aufruf mit
PowerManagement('Hibernate');
PowerManagement('Shutdown');
Aber wenn ich das richtig Lese was du da schriebst, muss ich dich um deinen Code bitten, noch bin ich unter Kubuntu 10.4 aber morgen wird Kubuntu 10.10 released ...
--
Just try it
Just try it
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
Re: [Gelöst] Computer auf Standby & Hibernate setzten
@corpsman:
Bei mir sieht das so aus und funktioniert unter 10.10 prima:
Bei mir sieht das so aus und funktioniert unter 10.10 prima:
Code: Alles auswählen
procedure doStandby;
var p: TProcess;
begin
if FileExists('/usr/bin/dbus-send') then
begin
p:=TProcess.Create(nil);
p.Options:=[poStderrToOutPut];
writeLn('Standby Linux...');
p.CommandLine:='dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend';
p.Execute;
p.Free;
//halt(0);
end
else writeLn('DBus command line utility not found!');
end;
procedure doHibernate;
var p: TProcess;
begin
if FileExists('/usr/bin/dbus-send') then
begin
p:=TProcess.Create(nil);
p.Options:=[poStderrToOutPut];
writeLn('Hibernating Linux...');
p.CommandLine:='dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Hibernate';
p.Execute;
p.Free;
//halt(0);
end
else writeLn('DBus command line utility not found!');
end;