Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    10

    ciao a tutti

    Ciao ragazzi.. mi chiamo Alessandro, ho 22 anni e faccio il programmatore cobol (purtroppo alle superiori ci hanno insegnato solo quello).

    Mi sto cimentando in VB.net e avrei bisogno di una mano:
    In pratica sto cercando di creare un programma che fa degli screenshoot ogni "n" secondi e li salva .. solo che non riesco a capire perche, dopo il primo screen si ferma come se uscisse dal ciclo del "tick".

    questo è il codice :

    codice:
    Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    End Sub 
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
       Button1.Visible = False 
       Button2.Visible = True 
       Me.Timer1.Interval = 1000
       Me.Timer1.Enabled = True 
       Me.Timer1.Start() 
    End Sub
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    
       Button2.Text = "Stopped" 
       Me.Timer1.Enabled = False 
    End Sub 
    
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
    
       Dim bounds As Rectangle 
       Dim Screenshot As System.Drawing.Bitmap 
       Dim graph As Graphics bounds = Screen.PrimaryScreen.Bounds 
       Screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)  
       graph = Graphics.FromImage(Screenshot) graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy) 
       PictureBox1.Image = Screenshot 
       Timer1.Enabled = False 
       Dim b As Integer 
       Dim c As String 
       b = b + 1 
       c = "C:\Users\Michael Scofield\Desktop\" & b & ".jpg" 
       PictureBox1.Image.Save(c, System.Drawing.Imaging.ImageFormat.Bmp) 
    End Sub 
    End Class
    chi mi da una mano??

    Grazie..

  2. #2
    Utente di HTML.it L'avatar di yyzyyz
    Registrato dal
    Oct 2001
    Messaggi
    1,653
    Forse perchè si disabilita il controllo timer?
    Poi non capisco perchè si disattiva due volte , ciaè sia dal Button2_Click che dal Timer1_Tick, non ha molto senso , cmq il tuo problema mi pare risolvibile con qualche modifica al codice. ciao

  3. #3
    Credo che il problema sia tutto nella riga Timer1.Enabled = False dentro l'evento Tick. Se disabiliti il Timer è normale che non ti arrivino più altri eventi Tick dopo il primo.
    Chi non cerca trova.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    10
    OK grazie XD.
    In realtà ora li fa, ma lo rinomina sempre uguale.. vorrei sapere una cosa :

    una volta nel Tick, cicla dalla prima all'ultima istruzione della class giusto??

    se si, perchè non prende il "B = B + 1 " e non mi incrementa la variabile in modo da cambiare il nome del file da mettere ?

  5. #5
    Utente di HTML.it L'avatar di yyzyyz
    Registrato dal
    Oct 2001
    Messaggi
    1,653
    mmm ... hai provato a dichiarare nel Form1_Load B=0 ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    10
    no perchè non l'ho dichiarata come variabile pubblica ma solo come variabile x quel ciclo...

    In ogni caso quello è il minore dei problemi...
    il problema grosso è che così facendo mi fa degli screen di4 - 5 mega.. io avrei bisogno di fare screen + leggeri per far si di poterli uppare su internet. (100 - 200 kb.. come un normale screen jpg)

  7. #7
    Se lo scopo è quello di fare lo screenshot dello schermo ti basta scrivere:
    codice:
    Screenshot.Save(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\" & b & ".jpg", ImageFormat.Jpeg)
    GetFolderPath restituisce il percorso dell'utente, ImageFormat.Jpeg forza il salvataggio nel formato JPEG, notoriamente più compresso rispetto al BMP.
    Chi non cerca trova.

  8. #8
    Utente di HTML.it L'avatar di yyzyyz
    Registrato dal
    Oct 2001
    Messaggi
    1,653
    codice:
    Public Class Form1
        Dim c As String
        Dim start As Boolean
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            PictureBox1.Visible = False
            Button1.Text = "start"
            start = False
            Timer1.Stop()
            ' ogni 10 sec. fa lo screenshoot
            Timer1.Interval = 10000
        End Sub
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Dim bounds As Rectangle
            Dim Screenshot As System.Drawing.Bitmap
            Dim graph As Graphics
            Static b As Integer
    
            bounds = Screen.PrimaryScreen.Bounds
            Screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
            graph = Graphics.FromImage(Screenshot)
            graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
            PictureBox1.Image = Screenshot
            b = b + 1
            c = "C:\" & b & ".jpg"
            PictureBox1.Image.Save(c, System.Drawing.Imaging.ImageFormat.Jpeg)
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If start = False Then
                Button1.Text = "stop"
                Timer1.Start()
                start = True
            Else
                Button1.Text = "start"
                Timer1.Stop()
                start = False
            End If
        End Sub
    End Class

  9. #9
    Utente di HTML.it L'avatar di yyzyyz
    Registrato dal
    Oct 2001
    Messaggi
    1,653
    cosi funziona meglio
    codice:
    Public Class Form1
        Dim c As String
        Dim start As Boolean
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Button1.Text = "start"
            start = False
            Timer1.Stop()
            ' ogni minuto fa lo screenshoot
            Timer1.Interval = 10000
        End Sub
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Dim bounds As Rectangle
            Dim Screenshot As System.Drawing.Bitmap
            Dim graph As Graphics
            Dim percorso As String
            Static b As Integer
    
            bounds = Screen.PrimaryScreen.Bounds
            Screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
            graph = Graphics.FromImage(Screenshot)
            graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
            b = b + 1
            percorso = Application.StartupPath & "\" & b & ".jpg"
            Screenshot.Save(percorso, System.Drawing.Imaging.ImageFormat.Jpeg)
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If start = False Then
                Button1.Text = "stop"
                Timer1.Start()
                start = True
            Else
                Button1.Text = "start"
                Timer1.Stop()
                start = False
            End If
        End Sub
    End Class

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    10
    Grazie mille.. il codice che hai messo funziona davvero bene.. ti ringrazio tantissimo..

    Avrei altre due domande da farvi ( sempre se non vi dispiace rispondere)

    1) volevo far si che tutti gli screen, alla pressione del tasto stop, venissero compressi in un archivio .zip con password così da far si che non possano essere modificati..

    sul web parlano di api particolari..sinceramente nn ho capito molto..

    2) è possibile monitorare ogni minuto il voltaggio della cpu?? in modo da scrivere il voltaggio della cpu in un .txt da inserire nel rar di prima..

    anche di questo ne parlano.. sto continuando a cercare qualcosa.. intanto una mano sarebbe graditissima..

    PS: grazie ancora, siete gentilissimi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.