Screenshot Speicherort Problem

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von xmise.

    Screenshot Speicherort Problem

    Hallo,
    ich habe ein Problem mit mein Screenshot Code. Er speichert dies immer in dem selben Ordner ab, wo das Programm sich befindet, ich habe aber einen
    anderen Pfad angegeben. Ich bekomme dies nicht hin nach Stundenlangen probieren. Er speichert immer in dem Ordner ab wo das Programm ist:

    VB.NET-Quellcode

    1. TB2_ScreenUhr.Text = System.DateTime.Now
    2. Dim sText As String = TB2_ScreenUhr.Text
    3. sText = sText.Replace(":", "")
    4. sText = sText.Replace(".", "")
    5. sText = sText.Replace(" ", "")
    6. TB2_ScreenUhr.Text = sText
    7. Dim b As New Bitmap(100, 100)
    8. Using g As Graphics = Graphics.FromImage(b)
    9. g.CopyFromScreen(0, 0, 0, 0, New Size(100, 100))
    10. End Using
    11. Dim Pfad As String = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop & "\" & "VKZ" & "\")
    12. If IO.Directory.Exists(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) & "\" & "VKZ") Then
    13. b.Save(Pfad & TB2_ScreenUhr.Text & ".jpeg", Imaging.ImageFormat.Jpeg)
    14. End If


    Kann mir jemand helfen?

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @Script1 Lerne zu debuggen: Debuggen, Fehler finden und beseitigen
    Vergewissere Dich, dass dein Code das tut, was er tun soll.
    Deinem Text entnehme ich, dass sich Dein Programm auf dem Desktop im Verzeichnis VKZ befindet.
    ===
    Wenn nur der Speicherort das Problem ist, hat das nix mit Screenshot zu tun, Dein Thread-Titel ist dann irreführend.
    Benenne diesen Deinen Thread dann sinnvoll um.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe dies gerade umbenennt. Ich habe herausgefunden, das der Pfad korrekt ist, das hängt mit dem Speichern zusammen

    Hat jemand eine Idee wie ich das mit dem Pfad (bei dem Screenshot speichern) lösen kann?

    Beiträge zusammengefasst ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Stell mal Option Stirct auf ON!

    Script1 schrieb:

    TB2_ScreenUhr.Text = System.DateTime.Now


    Was für ein Datentyp sollTB2_ScreenUhrsein?
    Und was für ein DatentypsollTB2_ScreenUhr.Textsein?

    Einen Pfad aufzurufen klappt übrigens nur mit Datentyp String in dem Pfad/Dateinamen.

    Probier mal:

    VB.NET-Quellcode

    1. Dim TB2_ScreenUhr As String
    2. TB2_ScreenUhr = System.DateTime.Now.ToString
    3. Dim sText As String = TB2_ScreenUhr
    4. sText = sText.Replace(":", "")
    5. sText = sText.Replace(".", "")
    6. sText = sText.Replace(" ", "")
    7. TB2_ScreenUhr = sText
    8. Dim b As New Bitmap(100, 100)
    9. Using g As Graphics = Graphics.FromImage(b)
    10. g.CopyFromScreen(0, 0, 0, 0, New Size(100, 100))
    11. End Using
    12. Dim Pfad As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\" & "VKZ"
    13. If IO.Directory.Exists(Pfad) Then
    14. Pfad = Pfad & "/" & TB2_ScreenUhr & ".jpeg"
    15. b.Save(Pfad, Imaging.ImageFormat.Jpeg)
    16. End If
    Kunst kommt von können und nicht von wollen, sonst hieße es Wunst!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xmise“ ()

    @xmise: Anmerkung: Replace lässt sich verketten

    VB.NET-Quellcode

    1. Dim sText As String = TB2_ScreenUhr.Replace(":", "").Replace(".", "").Replace(" ", "")

    Deine Pfadgeschichte wäre mit IO.Path.Combine sicherer. Auch verwendest Du einmal \, einmal /.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    ja, natürlich ist da noch was zu verbessern. Hab mich halt nur um die Datentypen gekümmert.

    @Script1
    Schon klar, daß es die Uhrzeit sein soll. Ich habe aber nach dem Datentyp gefragt.
    isses nu ein String oder Daytimeoder was auch immer?

    Wie gesagt: in einem Save Dialog wird ein Pfad & Name in Stringerwartet!
    Kunst kommt von können und nicht von wollen, sonst hieße es Wunst!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xmise“ ()

    Script1 schrieb:

    TB_ScreenUhr das soll die Uhrzeit sein, wo er als Dateiname die Uhrzeit rein schreibt
    Das machst Du mittels einer Formatierung eines DateTime.Now-Wertes, z.B.:

    VB.NET-Quellcode

    1. Dim stamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke,es wäre nett, wenn Du uns Deine funktionierende Lösung vorstellst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Meine Lösung ist folgendes:

    VB.NET-Quellcode

    1. TB2_ScreenUhr.Text = System.DateTime.Now
    2. Dim sText As String = TB2_ScreenUhr.Text
    3. sText = sText.Replace(":", "")
    4. sText = sText.Replace(".", "")
    5. sText = sText.Replace(" ", "")
    6. Dim stamp = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss")
    7. TB2_ScreenUhr.Text = sText
    8. Dim bounds As Rectangle
    9. Dim screenshot As System.Drawing.Bitmap
    10. Dim graph As Graphics
    11. bounds = Screen.PrimaryScreen.Bounds
    12. screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
    13. graph = Graphics.FromImage(screenshot)
    14. graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
    15. Dim Pfad As String = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) & "\" & "YTH" & "\"
    16. screenshot.Save(Pfad & TB2_ScreenUhr.Text & ".jpg")


    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Jetzt hast du jemanden verärgert.
    Du hast erfolgreich die Codezeile irgendwo eingefügt. Aber gebracht hat es laut deinem CodeSnippet nichts.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

    Akanel schrieb:

    Jetzt hast du jemanden verärgert.
    :thumbsup:
    @Script1 Aus Deinen Antworten diagnostiziere ich Beratungsresistenz und Lernbefreiung. X(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Script1
    da Du weder mit der "Option Strict On" arbeitest und anscheinend nicht in der Lage bist auf eine einfache Frage
    auch nur ansatzweise eine Antwort zu formulieren(und sei es auch nur eine Nachfrage was oder wie ich das gemeint haben könnte),
    muss ich @RodFromGermany im Post 15 zustimmen
    Kunst kommt von können und nicht von wollen, sonst hieße es Wunst!