Wir benötigen einen Screenshot unserer App für einen Komponententest. CaptureScreen()
und CopyFromScreen()
ignorieren die App und geben Bilder eines leeren Desktops zurück. Also haben wir das geschrieben, um eine PrtScn
Tastenkombination zu fälschen:
Alt
ist nicht Teil des Tastenanschlags, daher sollte dies eine Bitmap des gesamten Bildschirms zurückgeben. Doch irgendwie gibt dieser Ausschnitt nur das fokussierte Fenster zurück. Was gut ist, das löst unser Problem - aber wir verstehen nicht wie.
Warum gibt dies eine Aufnahme nur des fokussierten Fensters anstelle des gesamten Monitors zurück?
Es gibt tatsächlich einen "Grund", wenden Sie sich an das MSDN Bibliotheksartikel , der die wichtigsten Abkürzungen dokumentiert, die Sie verwenden können. Beachten Sie den Eintrag für PRINT SCREEN:
{PRTSC} (reserviert für zukünftige Verwendung)
Das ist eine etwas ungeschickte Art zu sagen: "Wir wissen, dass es nicht funktioniert, vielleicht wird es das eines Tages beheben". Dieser Tag ist noch nicht angekommen. Sie testen also wahrscheinlich den Fehlermodus dieses Schlüssels und tatsächlich wie die Art, wie es funktioniert. Das ist natürlich nicht gesund, sie können das Problem tatsächlich eines Tages beheben und Ihr Programm brechen.
Beachten Sie den Hinweis zum Eintrag <appSettings>
, den Sie zu Ihrer .config-Datei hinzufügen können, und weiter unten auf derselben MSDN-Seite. Ich vermute, weiß aber nicht, dass die SendInput-Methode zuverlässiger ist.
Tags und Links c# automation screenshot sendkeys