Avatar billede steensommer Praktikant
20. februar 2013 - 16:34 Der er 6 kommentarer

Slette billede

Hej

Jeg har oprettet et skema som jeg efterfølgende vil maile det en modtager.
Skemaet vises som en jpg fil vha screendump og alt fungerer fint MEN jeg vil programmeringsmæssigt kunne slette filen umiddelbart efter anvendelsen men når koden når til at slette så får jeg blot besked om at filen er i brug. Hvordan kan jeg slette den subsidiært evt anvende et screendump der ikke gemmes?

  Private Sub EMail(ByVal Modtager As String, ByVal Tekst As String)
        Dim D As DateTime = MonthCalendar1.SelectionRange.Start

        'Lav screendump
        Dim bmpScreenshot As Bitmap = New Bitmap(Width, Height, PixelFormat.Format32bppArgb)
        Dim gfxScreenshot As Graphics = Graphics.FromImage(bmpScreenshot)
        Dim TEMP As String
        gfxScreenshot.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size, CopyPixelOperation.SourceCopy)
        bmpScreenshot.Save("F:\Temp\" & "Booking-" & D & ".jpg", ImageFormat.Jpeg)

        Try
            Dim smtpServer As New SmtpClient
            Dim mail As New MailMessage
            smtpServer.Credentials = New Net.NetworkCredential("XXXX@gmail.com", "XXXXX")

            Dim contentID As String = "Booking for " & D
            smtpServer.Port = 587
            smtpServer.Host = "smtp.gmail.com"
            smtpServer.EnableSsl = True
            mail = New MailMessage
            mail.From = New MailAddress("XXXX@gmail.com")
            mail.To.Add(Modtager)
            mail.Subject = "PH Varde procedurer for " & D
            Dim attachment As System.Net.Mail.Attachment
            attachment = New System.Net.Mail.Attachment("F:\Temp\" & "Booking-" & D & ".jpg")
            mail.Attachments.Add(attachment)
            mail.Body = Tekst
            smtpServer.Send(mail)

            Dim FileToDelete As String
            FileToDelete = "F:\Temp\" & "Booking-" & D & ".jpg"
            If System.IO.File.Exists(FileToDelete) = True Then
                System.IO.File.Delete(FileToDelete)
                MsgBox("File Deleted")
            End If

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
Avatar billede wjens Guru
20. februar 2013 - 17:23 #1
Du kan helt undlade at gemme billedet på disken.
Bitmap billedet må kunne indlæses direkte som Attachment.
Avatar billede wjens Guru
20. februar 2013 - 17:26 #2
Avatar billede steensommer Praktikant
20. februar 2013 - 18:27 #3
Jeg har nu svært ved at implementere det i ovenstående kode
Avatar billede wjens Guru
21. februar 2013 - 14:21 #4
Jeg har ikke mulighed for at teste lige nu, men prøv at erstatte din skrivning til disken med:

  Dim stream As Stream = New MemoryStream()
  bmpScreenshot.Save(stream, ImageFormat.bmp)

og indlæsningen til email med:

    stream.Seek(0, SeekOrigin.Begin)
    mail.Attachments.Add(
        New System.Net.Mail.Attachment(stream, "xxx.bmp"))

Jeg har tidligere brugt noget lignende uden problemer.
Avatar billede wjens Guru
16. marts 2013 - 16:49 #5
Ok?
Avatar billede jonassk Nybegynder
30. april 2013 - 09:57 #6
Efter "bmpScreenshot.Save("F:\Temp\" & "Booking-" & D & ".jpg", ImageFormat.Jpeg)"

Skriv dette ind:

bmpScreenshot.Dispose()
gfxScreenshot.Dispose()
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester