Es gibt DirectShow-kompatible Filter für die Bildschirmaufnahme. Damit können Sie jedes Aufnahmeprogramm verwenden, um den Bildschirminhalt zu erfassen oder eine Anwendung selbst in .NET zu schreiben (aber es ist nicht einfach).
Der, den ich verwenden ist: http://www.hmelyoff.com/index.php?section=9
EDIT: Ich habe nicht über eine Probe oder Erfahrungen mit dem WME SDK. Aber ich würde empfehlen, die DirectShow-Route zu gehen, um die Anforderung von WME auf dem Host-System zu vermeiden, die fehlende Unterstützung dafür, und es ist einfach gut, DirectShow (oder do-it-yourself) zu kennen, anstatt irgendeine zufällige API.
Um den Hmelyoff-Filter zu verwenden, funktioniert es wie eine Webcam. Es ist nur eine weitere Videoaufnahmequelle, die für jede Anwendung verfügbar ist, die Videoeingaben möchte. Es funktioniert, indem Sie einfach den Teil des viedo-Puffers auf seinen Ausgangs-Pin auf jedem Frame kopieren (mit einer API-Funktion wie BitBlt).
Ein Beispielcode ist here.
Oder wenn Sie nur mit DirectShow verbinden möchten, ist der einfachste Weg, eine Bibliothek zu verwenden, um die COM-Interaktion für Sie zu tun. http://directshownet.sourceforge.net/ ist ein guter.
Nochmals bearbeiten: Das Aufnehmen als Video ist das gleiche wie das Erfassen von Frames. Es erfasst nur Frames 30 Mal pro Sekunde. CPU Schwein? Es ist nicht zu erwarten, die volle Bildrate zu erhalten.
Wenn Sie fragen, wie Sie die Bilder als Video speichern können, müssen Sie die Daten an einen Videokodierer übergeben. Sie müssen dazu eine Schnittstelle zu DirectShow herstellen.
http://www.codeproject.com/KB/dialog/screencap.aspx?display=Print erwähnt es sowieso ... – rogerdpack