PDA

Visualizza la versione completa : Semplice programma per acquisire BMP


Gianzark
19-07-2011, 23:17
Ciao a tutti sono nuovo del forum e mi sono flippato con una cosa che boh credo sia davvero una banalità ma io davvero non sono in grado di farla...siccome spesso e volentieri mi capita di stampare lo schermo su file (tramite il tasto stampa risorse di sistema) e sono una persona moooolto pigra :-P credo sia un procedimento breve ma stufoso a lungo andare aprire paint incollare e salvare il file...so che ci sono dei programmi appositi ma volevo sapere se c'è un modo di fare un piccolo programmino in C che quando lanciato mi stampa lo schermo e lo salva automaticamente su file magari mettendolo in una cartella che specifico io? non sono molto pratico con la programmazione in C sarei grato a chiunque volesse darmi due dritte o magari indirizzarmi su qualke cosa gia fatta ( dato che io ho cercato ma non ho trovat molto che somigliasse a quello che devo fare)...lo so sono un flippato...ma ero curioso di fare una cosetta carina....ahahah Grazie a tutti vi auguro una buona giornata serata mattinata...tutto!! :-P ciaoooo

MItaly
20-07-2011, 00:11
In realtà non è così banale... ti devi studiare un po' di API GDI di Windows.
In particolare, devi ottenere le dimensioni dello schermo (GetSystemMetrics per il monitor primario, oppure EnumDisplayDevices, CreateDC, GetDeviceCaps), ottenere un DC al dispositivo di input (GetDC(NULL) per il solo schermo primario, tieni i DC ottenuti con CreateDC prima se vuoi supportare più schermi), creare un device context compatibile per l'output (CreateCompatibleDC), creare una DDB delle dimensioni corrette compatibile con il DC di origine (CreateCompatibleBitmap), copiare l'immagine dal DC sorgente a quello di destinazione (BitBlt) e rilasciare i vari DC (ma non la bitmap).
A questo punto puoi ottenere il contenuto della bitmap con GetDIBits, chiamandola una prima volta con NULL per lpvBits per ottenere le informazioni sull'header della bitmap; alloca quindi la memoria necessaria per la bitmap, inizializza correttamente la struttura BITMAPINFOHEADER che sta all'inizio del blocco di memoria, e richiama nuovamente GetDIBits (passandole stavolta un puntatore alla memoria allocata).
A questo punto dovrebbe bastare scrivere il contenuto di quest'area di memoria su file per ottenere la bitmap desiderata.

Gianzark
20-07-2011, 17:54
Moolto bene, innanzi tutto ti ringrazio per la risposta anche se non proprio alla mia portata, non ho capito quasi una fava, looolz. credevo fosse qualcosa di molto più semplice, non riesci mica ad indirizzarmi su qualke programmino gia fatto che poi posso solamente modificare come voglio...!? Grazie mille ancora buona serata ciauuu

LeleFT
20-07-2011, 18:05
Originariamente inviato da Gianzark
Moolto bene, innanzi tutto ti ringrazio per la risposta anche se non proprio alla mia portata, non ho capito quasi una fava, looolz. credevo fosse qualcosa di molto più semplice, non riesci mica ad indirizzarmi su qualke programmino gia fatto che poi posso solamente modificare come voglio...!? Grazie mille ancora buona serata ciauuu

Questo tipo di richieste non sono ammesse su questo forum.
La richiesta di codice pronto (sia da produrre, che già pronto) non è ammessa dal regolamento interno.

Se quanto da te richiesto è fuori dalla tua portata, consiglio di postare nel forum "Offro Lavoro / Collaborazione" dove vengono prese in carico, appunto, anche proposte di collaborazione.

In alternativa, puoi effettuare una ricerca con Google.


Devo chiudere qui la discussione.


Ciao. :ciauz:

Loading