Monitor an / aus

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
xStream
User
Beiträge: 24
Registriert: Dienstag 15. Februar 2005, 21:39

Mittwoch 3. August 2005, 14:44

Ich möchte über Python den Monitor ausschalten, durch googlen hab ich nichts gefunden. In Delphi ist es offenbar ganz einfach:
http://chiragdalal.tripod.com/howto/monitor_on_off.html

MfG

xStream
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 3. August 2005, 17:07

Ungetestet:

Code: Alles auswählen

import win32api, win32con

win32api.SendMessage("Hier brauchst du ein hwnd", win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 1)

win32api.SendMessage("Hier brauchst du ein hwnd", win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 2)

win32api.SendMessage("Hier brauchst du ein hwnd", win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, -1)
Ich weiß im Moment nicht wo man ein hwnd herzaubern soll.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Mittwoch 3. August 2005, 18:16

Leonidas hat geschrieben:Ich weiß im Moment nicht wo man ein hwnd herzaubern soll.
Nicht herzauber, sonder du musst eins haben. Mit dem Bildschirschoner aktivieren ging es jedenfalls so. Man musste an das Fenster seines eigenen Programms die Nachricht "Bildschirschoner aktivieren" schicken.

Du kannst auch mal versuchen, das Handle von der Taskbar, oder dem Desktop zu benutzen. Vielleicht klappts.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 3. August 2005, 19:27

ProgChild hat geschrieben:Nicht herzauber, sonder du musst eins haben. Mit dem Bildschirschoner aktivieren ging es jedenfalls so. Man musste an das Fenster seines eigenen Programms die Nachricht "Bildschirschoner aktivieren" schicken.
Ich weiß, ich wollte mit dem "herzaubern" nur ausdrücken, dass ich im Moment keine Ahnung habe, wie man das hWnd des eigenen Fensters bestimmt und auch keine Lust hatte noch weiter danach zu suchen. Aber vielleicht kann ProgChild dir ein Beispiel geben woher man das hWnd bekommt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Mittwoch 3. August 2005, 21:29

Leonidas hat geschrieben:Ich weiß, ich wollte mit dem "herzaubern" nur ausdrücken, dass ich im Moment keine Ahnung habe, wie man das hWnd des eigenen Fensters bestimmt und auch keine Lust hatte noch weiter danach zu suchen. Aber vielleicht kann ProgChild dir ein Beispiel geben woher man das hWnd bekommt.
Schön wärs... Ich hab hier einen Link. Den musst du dir aber nach Python umschreiben...

Vom Prinzip her, bekommst du das Handle von der Funktion CreateWindow oder CreateWindowEx. Dan brauchst du es, um z.B. das Fenster anzuzeigen. Die WinAPI ist so ne Sache für sich. Ist bei mir auch schon etwas her...

Wenn du ein Toolkit benutzt, dann gibt es da bistimmt ne Funktion, wie du leichter an ein Fenster Handle kommst.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 3. August 2005, 22:02

Naja, hier ist das Window schon da, entweder dass Fensterle von python oder halt Talkleiste oder so was ähnliches. Nur man muss das Handle irgendwie bekommen. Ich habe hier so ein kleines Tutorial, jedoch fehlt mir hier wo hWnd eigentlich her kommt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Donnerstag 4. August 2005, 14:21

Das Handle von der Taskbar müsstest du so bekommen (ungetestet):

Code: Alles auswählen

from win32api import *
from win32con import *
from win32gui import *

hWnd = FindWindow("shell_traywnd", "");

Nur falls es jemanden interessiert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 4. August 2005, 16:18

Leonidas hat geschrieben: Ich weiß im Moment nicht wo man ein hwnd herzaubern soll.
Hi Leonidas!

Dein Beispiel gefällt mir. :-)
Mit

Code: Alles auswählen

win32gui.GetDesktopWindow()
bekommt man den HWND des Desktops.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
xStream
User
Beiträge: 24
Registriert: Dienstag 15. Februar 2005, 21:39

Donnerstag 4. August 2005, 20:22

Thx! Folgendes Beispiel geht:

Code: Alles auswählen

import win32api, win32con, win32gui, time

hWnd = win32gui.FindWindow("shell_traywnd", "")

win32api.SendMessage(hWnd, win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 2)
time.sleep(3)
win32api.SendMessage(hWnd, win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, -1)
@Gerold deins ging bei mir leider nicht.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 5. August 2005, 07:21

xStream hat geschrieben: @Gerold deins ging bei mir leider nicht.
Hi xStream!

Das kapiere ich jetzt nicht so ganz. Da ich mir nicht sicher war, habe ich es vor dem Posten noch bei mir ausprobiert. :shock: (Win2000)

Was soll's, hauptsache ist doch, dass du eine funktionierende Lösung gefunden hast. :-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 5. August 2005, 09:26

Na wunderbar, dann haben wir ja eine Gemeinschaftlösung erreicht. Perfekt!

Gerold: Also bei mir funktioniert dein Code problemlos.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten