Παρασκευή 8 Ιανουαρίου 2010

Πρόγραμμα για screen capture -VB.net

Καιρό έχουμε να δούμε κάτι απο προγραμματισμό, αλλά χρειάστηκα κάτι σήμερα και έτσι μου δόθηκε η ιδέα για τον επόμενο οδηγό. Αποφάσισα να ξαναπαίξω ένα παλιό παιχνίδι που μου αρέσει , μόνο που αυτή την φορά σκέφτηκα να παίρνω και μερικά screenshots απο τις τοποθεσίες του παιχνιδιού.
Σκέφτηκα να κατεβάσω ένα πρόγραμμα για αυτή την δουλεία, γιατί αυτό που έχω είναι και λίγο περίεργο. Μετά όμως απο λίγη ώρα που έψαχνα στο ίντερνετ λέω, δέν φτιάχνω ένα πρόγραμμα γιαυτήν την δουλεία. Είχα χρειαστεί στο παρελθόν να βάλω κάπου μια λειτουργία για να τραβάμε screenshots, οπότε κάτι θυμάμαι.
Πρίν ξεκινήσουμε θα σας πώ την λογική. Όπως ξέρετε όταν πατάμε print screen (το κουμπί prtscr)
αποθηκεύεται στο clipboard ότι δείχνει εκείνη την στιγμή ο υπολογιστής μας, σε μορφή εικόνας. Με το πρόγραμμα μας θα τσεκάρουμε κάθε τόσο να δούμε άν το clipboard έχει κάποια εικόνα. Άν έχει τότε θα την αποθηκεύει.

Οκ, ανοίξτε τo visual studio και πάμε να φτιάξουμε το Gui.Ας φτιάξουμε κάτι απλό βάζοντας ένα picture box,που θα δείχνει την εικόνα που σώσαμε, και ένα label,όπου απλά θα λέει οτι η τάδε εικόνα σώθηκε. Επίσης θα χρειαστούμε έναν timer. Τι θα κάνει ο timer; Κάθε μισό δευτερόλεπτο θα λέει στο clipboard “έχεις κρατημένη καμιά εικόνα για μένα;Άν ναι, φέρτην να την αποθηκεύσω αν όχι σε ξαναρωτάω σε μίσο δευτερόλεπτο.”Οι timers είναι γενικός ανυπόμονοι τύποι.

Πάμε στον κώδικα

Στο load της φόρμας
Timer1.Interval = 500
Timer1.Enabled = True
Clipboard.SetDataObject("")

Βάζουμε τον timer στο μισό δευτερόλεπτο.
Τον ενεργοποιούμε
Καθαρίζουμε το clipboard.


Και στο timer tick

current_date = Now.Day & "-" & Now.Month & "-" & Now.Year & "-" & Now.Hour & "-" & Now.Minute & "-" & Now.Second
Παίρνουμε την ημερομηνία στο current_date.Αυτό το κάνω γιατί έτσι θα ονομάζω το κάθε αρχείο για να μην μπερδεύονται τα ονόματα.Δήλαδη η κάθε φωτογραφία θα έχει όνομα ημέρα-μήνας-χρόνος-ώρα-λεπτά-δευτερόλεπτα.jpg .

If Clipboard.GetDataObject.GetDataPresent(DataFormats.Bitmap) Then
picbox1.Image = CType(Clipboard.GetDataObject.GetData(DataFormats.Bitmap), Image)
Αν το clipboard έχει εικόνα τότε βάλτην στο picture box μας.

Clipboard.SetDataObject("")
Καθάρισε το clipboard.
picbox1.Image.Save(Trim(current_date) & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
info_lab.Text = Trim(current_date) + ".jpg " + "saved."
Σώσε την εικόνα και ενημέρωσε τον χρήστη μέσω του label box οτι το έκανες.
Else
Exit Sub
End If

Αλλιώς μήν κάνεις τίποτα.


Δηλώστε και την μοναδική μεταβλητή που θα χρειαστούμε έξω απο κάθε sub σαν
Dim current_date as string

και το πρόγραμμα είναι έτοιμο.



Στήν περίπτωση που θέλετε να σώσετε σε άλλο φορμάτ την εικόνα, τότε αλλάξτε το system.drawing.imaging.imageformat σε όποια άλλη επέκταση εικόνας θέλετε.

Κατεβάστε το πρόγραμμα και τον κώδικα του απο εδώ.
 

Copyright © panosdk Design by BTDesigner | Blogger Theme by BTDesigner | Powered by Blogger