![]() |
Bildschirm bei Bewegungserkennung anschalten
Hallo liebe Community,
wir setzen einen All-in-One PC mit Touchscreen + RFID-Scanner im Eingangsbereich als Zeiterfassung ein. Dieser hat eine integrierte Webcam, wodurch sich uns die Idee ergeben hat, den Bildschirm anzuschalten, sobald sich etwas davor bewegt. Das Betriebssystem ist Windows 7. Ich habe bereits ein Delphi-Prog geschrieben, das den Monitor anschalten soll (funktioniert bei meinem Vista-Rechner nur bedingt):
Delphi-Quellcode:
Ich hatte es ebenfalls mit einem Prog versucht, das den Cursor an eine zufällige Position setzt, dadurch geht der Monitor aber nicht an. (Quelltext auf Anfrage)
procedure TForm1.FormCreate(Sender: TObject);
begin SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MONITORPOWER,-1); halt; end; Die Software, die wir zur Bewegungserkennung einsetzen wollen, ist WebCamXP 5.3.4.295. Diese kann man auch im Dienstmodus laufen lassen und bei Bewegungserkennung (grob gesagt) u.a. ein Programm starten. Im "Normalmodus" (*.exe im Autostart) funktioniert diese nicht, weil wir die Explorer.exe per Anmeldeskript killen, da sie dort nicht benötigt wird. (Dann kommt ein Error, dass das Tray Icon nicht erstellt werden konnte) Hat einer von euch eine Idee, wie man den Bildschirm aus einem/diesem Dienst heraus anschalten kann? |
Re: Bildschirm bei Bewegungserkennung anschalten
Also erstmal HALT ist nicht grad geeignet, um ein Programm ordnungsgemäß zu beenden!
SendMessage(Application.Handle damit sendet du die Nachricht an dein eigenes Programm und das kann damit nun überhaupt nichts anfangen. Wenn, dann sollte man es mindestens an die Anwendung (bzw. das Fenster) schicken, welches den Monitor steuert oder einfach also globele Broadcast-Nachricht an alle :duck: |
Re: Bildschirm bei Bewegungserkennung anschalten
Unter Vista ging der Monitor kurz an und dann gleich wieder aus... könnte also am "halt" liegen?
mit der Win API hab ich bisher nie gearbeitet, deswegen weiß ich auch nicht, wie ich eine Nachricht global senden kann. Die Nachricht an sich wär ja vermutlich die gleiche. Es gibt eine Anwendung.exe, die während der Systemlaufzeit an ist, diese könnte man notfalls ja auch als "Ziel" angeben. Aber: Wie? Ob das ganze aus einem Dienst heraus funktioniert, würde ich dann testen. |
Re: Bildschirm bei Bewegungserkennung anschalten
Zitat:
Dienste sidn in einem eigenen Kontext und können mit anderen Fenstern nicht kommunizieren. Der Weg ist also eine andere Interprozesskommunikation... Pipes zB. Edit: Um den Bildschirm einzuschalten kannst mal folgendes testen.
Delphi-Quellcode:
Mouse_Event(Mouseeventf_move, 10,10,0,0);
|
AW: Bildschirm bei Bewegungserkennung anschalten
Folgender Code funktioniert auch unter WINDOWS 7 ULTIMATE 64:
Delphi-Quellcode:
program DISPLAYOFF; //oder DISPLAYON
//{$APPTYPE CONSOLE} uses Windows; const WM_SYSCOMMAND = 274; MONITOR_OFF = 2; MONITOR_ON = -1; Begin sleep(2000); PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);// oder MONITOR_ON sleep(2000); Exit; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz