Registriert seit: 4. Jan 2005
Ort: Bad Schwartau
11 Beiträge
|
Bildschirmaufbau abgeschlossen - wie kann man das ermitteln
17. Feb 2008, 21:37
Hallo
ich habe folgendes Problem:
Wenn ein bestimmtes Ereigniss eintritt, muß ein Bild aufgebaut und in dem Moment, wenn es komplett aufgebaut ist, mittels einer Webcam fotografiert werden. ( Die Ausgabe und die Aufnahme erfolgen über einen Beamer )
Das Problem dabei ist, daß die Aufnahme dann erfolgen muß, sobald der Bildaufbau komplett abgeschlossen ist - auf keinen Fall eher und auch nicht (viel) später.
Bisher benutze ich so etwas:
FormAufnahme.visible := TRUE; // Bild an
sleep(n); // warte, bis Aufbau fertig
.
SendMessage(FCapHandle, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0); // Foto machen
.
FormAufnahme.visible := FALSE; // Bild aus
Was dabei stört, ist das sleep ... ich weiss nie so genau, wieviel Zeit ich wirklich warten müsste, bis FormAufnahme komplett aufgebaut wurde - ausserdem soll es Hardwareunabhängig laufen. Die Zeit zwischen Abschluß des Bildaufbaus und dem Zeitpunbkt der Aufnahme sollte möglichst konstant sein und darf nicht zu lange dauern - ein sleep(200-300) oder so kommt also gar nicht in Frage.
Zu den Turbo-Pascal und damit lange vor den XP, NT usw. Zeiten gab es so etwas wie WaitForRetrace - damit konnte man durch Auslesen der Register der VGA-Karte auf die Auslösung des Strahlenrücklaufsignals warten ... gibt es etwas Vergleichbares, das man für XP / VISTA anwenden kann?
Ein einfaches OnShow und OnPaint der FormAufnahme klappt leider gar nicht ...
Jens
Jens Heinrichs
|