AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Bildschirm bei Bewegungserkennung anschalten
Thema durchsuchen
Ansicht
Themen-Optionen

Bildschirm bei Bewegungserkennung anschalten

Ein Thema von henkman05 · begonnen am 18. Sep 2009 · letzter Beitrag vom 20. Jun 2010
Antwort Antwort
henkman05

Registriert seit: 5. Mai 2009
2 Beiträge
 
#1

Bildschirm bei Bewegungserkennung anschalten

  Alt 18. Sep 2009, 14:52
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:
procedure TForm1.FormCreate(Sender: TObject);
begin
  SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MONITORPOWER,-1);
  halt;
end;
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)

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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Bildschirm bei Bewegungserkennung anschalten

  Alt 18. Sep 2009, 14:56
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
$2B or not $2B
  Mit Zitat antworten Zitat
henkman05

Registriert seit: 5. Mai 2009
2 Beiträge
 
#3

Re: Bildschirm bei Bewegungserkennung anschalten

  Alt 18. Sep 2009, 15:19
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.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Bildschirm bei Bewegungserkennung anschalten

  Alt 18. Sep 2009, 15:26
Zitat von henkman05:
.
Aber: Wie? Ob das ganze aus einem Dienst heraus funktioniert, würde ich dann testen.
Nein funktioniert nicht...bzw. unter Vista nicht mehr.
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.

Mouse_Event(Mouseeventf_move, 10,10,0,0);
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#5

AW: Bildschirm bei Bewegungserkennung anschalten

  Alt 20. Jun 2010, 10:00
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz