Mit Win32-Consolenanwendung einen Screenshot machen?
-
Hallo,
ich bin verzweifelt am suchen wie/ob ich mit einer Win32-Consolenanwendung einen Screenshot machen kann und diesen dann abspeichere.
Ist das überhaupts möglich? Ich finde nur Sachen für Windows-Form-Anwendungen.
Wäre super wenn jemand einen Link dazu hat bzw. mir sagen kann ich ich vorzugehen habe.
Vielen Dank
-
deggler schrieb:
Ist das überhaupts möglich?
Klar. Du kannst die gesamte WinAPI aus einer Konsolenanwendung heraus verwenden.
deggler schrieb:
Wäre super wenn jemand einen Link dazu hat bzw. mir sagen kann ich ich vorzugehen habe.
https://www.c-plusplus.net/forum/p1740386#1740386 ungetestet
-
Danke für deine Hilfe.
Soweit ich das verstehe, habe ich nach
::BitBlt(memDC, 0, 0, nWidth, nHeight, hdc, 0, 0, SRCCOPY);
den Screenshot in memDC.
Ich möchte jetzt den Screenshot weiter verwenden. Davor hat ein anderes Programm eine Bilddatei von der Platte gelesen. Jetzt soll statt der Bilddatei der Screenshot verwendet werden.
Auschnitt aus dem anderen Programm:
PIX *pixs; const char *filename = "C:/Users/U-LIVE/Pictures/test/test.bmp"; if (argv[1]) filename = argv[1]; if ((pixs = pixRead(filename)) == NULL) { printf("Unsupported image type of file %s.\n", filename); exit(3); } api->SetImage(pixs);
Kann ich das einfach so realisieren?
api->SetImage(memDC);
Ich denke nicht das es so einfach ist, oder?
-
Denke das hilft.
pixRead(const char *filename) { FILE *fp; PIX *pix; PROCNAME("pixRead"); if (!filename) return (PIX *)ERROR_PTR("filename not defined", procName, NULL); if ((fp = fopenReadStream(filename)) == NULL) return (PIX *)ERROR_PTR("image file not found", procName, NULL); pix = pixReadStream(fp, 0); fclose(fp); if (!pix) return (PIX *)ERROR_PTR("image not returned", procName, NULL); return pix; }
-
Ähhm, wenn du die Sources beider Programme hast, warum lässt du dann nicht das Programm den Screenshot machen, das ihn braucht??
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
deggler schrieb:
Auschnitt aus dem anderen Programm:
PIX *pixs; const char *filename = "C:/Users/U-LIVE/Pictures/test/test.bmp"; if (argv[1]) filename = argv[1]; if ((pixs = pixRead(filename)) == NULL) { printf("Unsupported image type of file %s.\n", filename); exit(3); } api->SetImage(pixs);
Kann ich das einfach so realisieren?
api->SetImage(memDC);
Ich denke nicht das es so einfach ist, oder?
Was soll denn PIX genau sein ?
Man müsste vermutlich ein Unterprogramm dazwischen aufrufen, das die Bits
in das benötigte Format einer PIX bringt.Der Link von Swordfish beinhaltet einen guten Lösungsansatz. Den muss man etwas modifizieren; etwas löschen und dann könnte man das so aufrufen:
pixs = ConvertToPix(hdc);