Seite 1 von 1
Monitor an / aus
Verfasst: Mittwoch 3. August 2005, 14:44
von xStream
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
Verfasst: Mittwoch 3. August 2005, 17:07
von Leonidas
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.
Verfasst: Mittwoch 3. August 2005, 18:16
von ProgChild
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.
Verfasst: Mittwoch 3. August 2005, 19:27
von Leonidas
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.
Verfasst: Mittwoch 3. August 2005, 21:29
von ProgChild
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.
Verfasst: Mittwoch 3. August 2005, 22:02
von Leonidas
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.
Verfasst: Donnerstag 4. August 2005, 14:21
von ProgChild
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.
Verfasst: Donnerstag 4. August 2005, 16:18
von gerold
Leonidas hat geschrieben: Ich weiß im Moment nicht wo man ein hwnd herzaubern soll.
Hi Leonidas!
Dein Beispiel gefällt mir.

Mit
bekommt man den HWND des Desktops.
lg
Gerold

Verfasst: Donnerstag 4. August 2005, 20:22
von xStream
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.
Verfasst: Freitag 5. August 2005, 07:21
von gerold
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.

(Win2000)
Was soll's, hauptsache ist doch, dass du eine funktionierende Lösung gefunden hast.
mfg
Gerold

Verfasst: Freitag 5. August 2005, 09:26
von Leonidas
Na wunderbar, dann haben wir ja eine Gemeinschaftlösung erreicht. Perfekt!
Gerold: Also bei mir funktioniert dein Code problemlos.