Einzelnen Beitrag anzeigen

JensHeinrichs

Registriert seit: 4. Jan 2005
Ort: Bad Schwartau
11 Beiträge
 
#1

Bildschirmaufbau abgeschlossen - wie kann man das ermitteln

  Alt 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
  Mit Zitat antworten Zitat