Sound bei Programmstart und Beenden

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von Snipy26.

    Sound bei Programmstart und Beenden

    Hallo liebe Gemeinde. :thumbsup:

    nach langer Auszeit habe ich mich mal wieder an meinem alten geliebten Projekt zugewendet. Mein kleiner Game Manager. Ich nutze VB Basic Express 2010. Leider.
    Oder kann ich 2020 nutzen und das Projekt dort weiter bearbeiten?

    ich möchte gerne folgendes machen. Einmal möchte ich gerne, dass beim Starten des Programmes eine .wav Datei abspielen. und wenn ich einmal, wenn ich das Programm schliesse, über das x rechts oben im Fenster, das ebenfalls eine .wav abgespielt wird, und danach sich erst das Fenster schließt. So mit (WaitToComplete)

    Habe hier im Forum schon mal was für mein separaten "Exit" - Button was gefunden, wegen einer .wav Datei. Hatte es gestern schon mal getestet, aber als normales abspielen. Jedoch wurde der Sound doppelt abgespielt. Was ich nicht verstehe, warum. kann ja sonst mal auch den Code nachher online stellen.

    Und ein weiteres Thema habe ich auch noch. Wie kann ich in der MsgBox den Text zentrieren?

    Ja, viele Fragen auf einmal, ich weiß. Aber wenn schon denn schon :D

    Ich danke Euch schon mal für Eure Hilfe und Unterstützung.
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:

    Snipy26 schrieb:

    Jedoch wurde der Sound doppelt abgespielt
    Mit welchem Code?
    Standard-Systemklänge bekommst Du abgespielt mit

    VB.NET-Quellcode

    1. SystemSounds.Asterisk.Play()
    die kommunitieren mit den MessageBox-Icons.
    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!
    hab da ein eigenen sound als wave Datei. kein standard winsound. ;)

    habe das wie folgt gemacht.

    VB.NET-Quellcode

    1. ​Private Sub
    2. btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
    3. PlayBackgroundSoundFile()
    4. My.Computer.Audio.Play("C:\eigenen sound.wav",AudioPlayMode.WaitToComplete)
    5. Me.Close()
    6. End Sub


    hab da ein extra exit button mit drin, und über den so funktioniert es ja, dass das abgespielt wird, aber halt doppelt, und dann macht er das Programm erst zu.
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:

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

    hab das so aus dieser mircosoft Anleitung kopiert und hab es halt auf meiner sound Datei angepasst

    Visual Basic-Quellcode

    1. Sub PlayBackgroundSoundFile()
    2. My.Computer.Audio.Play("C:\Waterfall.wav",
    3. AudioPlayMode.WaitToComplete)
    4. End Sub


    hier mal der link: docs.microsoft.com/de-de/dotne…-resources/playing-sounds
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:
    Dann sollte Dir auch klar werden, dass Du selber dafür sorgst, dass der Sound 2x abgespielt wird. Einmal durch Methodenaufruf hier und einmal "manuell" ne Zeile drunter. Noch Fragen, Kienzle?
    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.
    @ Bluespide. nein. habe diesen code bei Microsoft Anleitung genommen, und statt waterfall.wav. meine eigene Datei genommen und ersetzt. wollte damit den Ursprungscode zeigen, wo und wie ich den genommen habe. daher auch mein link dabei, wo ich das her habe. ;)

    @ VaporiZed, das war mir nicht klar. da ich den ja so 1 zu 1 kopiert und angepasst habe auf mein Pfad mit der sound Datei. werde es nachher mal gleich testen.

    bin ja noch auf Arbeit. und auf mein Mac m1 bekomme ich ja Visual Basic ja rauf, aber kann nicht für windows die form bearbeiten. zumindest habe ich dazu noch nichts gefunden. :/
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:
    So, das mit den Button und beenden habe ich schon mal gelöst bekommen. danke, darauf wäre ich nicht gekommen wegen dem doppel gemoppel. lach

    aber wie mache ich das , wenn ich das, wenn ich über das x das fenster schliesse?

    bzw auch die anderen sachen? lieb gefragt.
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:
    Und daher einfach nur im FormClosing-EventHandler den Schließsound abspielen und dann ist egal, wie das Programm geschlossen wird. Selbst, wenn ne tödliche Exception kommt.
    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.
    Also das mit Form.Load und Form.Close hat mir echt geholfen und das funzt perfekt. Danke schon mal. Bastel grade jetzt noch an Minimieren und wiederherstellen, aber da ich ja jetzt das mit Event kenne, denke ich mal, das ich das auch noch hin bekomme. hab mir jetzt extra dafür ein neues test projekt erstellt. wo ich rumspielen kann, ohne mein Haupt-Programm zu schrotten. und wenn es da läuft, wird es beim anderen angepasst. es nimmt Form und gestallt an. kann ja denn bald die erste Beta vorstellen. weil da ist noch immer das Thema Datenbank. darum kümmer ich mich aber als nächstes. erstmal Grundgerüst fertig bauen.

    wo ich aber auch noch fest hänge ist das Thema mit der Message Box und zentrierten Text.

    hier mal ein beispiel. habe mehrere msgbox drin.

    VB.NET-Quellcode

    1. Private Sub UpdateToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UpdateToolStripMenuItem.Click
    2. MsgBox("Derzeit nicht verfügbar!")
    3. End Sub


    Vllt hat da ja einer den Anstoß für mich, was da fehlt bzw. rein muss, damit der Text zentriert ist.

    auf jeden fall danke schon mal für die tolle Hilfe und Unterstützung. :)
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:

    Snipy26 schrieb:

    weil da ist noch immer das Thema Datenbank
    Ich komme mal EdR zuvor und verweise auf seinen Thread: DatasetOnly: DB-Programmierung ohne Datenbank und in dem Zusammenhang auch EdRs VVV. Da gibt's genügend Infos zum schnellen Einstieg.
    Da kannst Du Dir erstmal die Grundlagen abholen, bevor Du 2 Baustellen hast, nämlich Datenmodell UND DB-Anbindung.

    MsgBox? Ist VB6. Daher nächstes Einlesethema: die empfohlenen VS-Einstellungen

    Aber: Weder MsgBox noch die .NET-Variante sind von Haus aus in der Lage, Text zentriert anzuzeigen.
    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.
    Da gebe ich dir recht, was mehrere Baustellen angeht. Deswegen ja erstmal Grundgerüst basteln. UNd dann erst Datenbank. 2 Baustellen zu haben ist doof, weil denn komme ich komplett durcheinander. lach.

    Habe mir die Links gespeichert.

    Arbeite mit Visual Basic 2010 Express. Weiß ja nicht, wenn ich mir 2020 hole, ob ich da meine Projekte ( Testprogramm und Hauptprogramm) da drin weiter machen kann oder nicht. Habe schon so manche schlaflose Nacht gehabt wegen den Programm. :/

    Aktuell bin ich ja noch beim Sound dran. Mit minimieren und wiederherstellen. Ich denke mal, Ihr wisst was ich meine. Fehlen grad die passenden Worte.
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:
    Hänge mal wieder fest.

    Habe es hinbekommen, das wenn ich minimiere, der ton abgespielt wird. aber fürs wiederherstellen hab ich noch nichts gefunden.

    VB.NET-Quellcode

    1. ​Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    2. If Me.WindowState = FormWindowState.Minimized Then
    3. My.Computer.Audio.Play(My.Resources.Minimize, AudioPlayMode.Background)
    4. End If
    5. End Sub


    Setze ich es aber wie folgt, wird der Ton leider auch beim Starten des Programmes abgespielt ->

    VB.NET-Quellcode

    1. Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    2. My.Computer.Audio.Play(My.Resources.Minimize, AudioPlayMode.Background)
    3. End Sub


    Habe es auch so versucht, aber ohne Erfolg. Gleicher Effekt, Ton wird schon beim Programm Start abgespielt.

    VB.NET-Quellcode

    1. Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    2. If Me.WindowState = FormWindowState.Minimized Then
    3. My.Computer.Audio.Play(My.Resources.Minimize, AudioPlayMode.Background)
    4. 'Me.ShowInTaskbar = True
    5. 'Me.WindowState = FormWindowState.Minimized
    6. Else
    7. If Me.WindowState = FormWindowState.Normal Then My.Computer.Audio.Play(My.Resources.Minimize, AudioPlayMode.Background)
    8. End If
    9. End Sub


    gibt es da extra was wie Form1.ShowInTaskbar(ByVal sender As Object, ByVal e As System.EventArgs) Handles Click oder so??
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:
    @Snipy26 Du musst nicht bei einem Zustand Dein Liedchen spielen, sondern bei einer Änderung von Zustand A nach Zustand B.
    So kannst Du vermeiden, dass beim Start das Lied gespielt wird.
    Also (Pseudocode):

    Quellcode

    1. If LastState = ZustandA AndAlso Me.WindowState = ZustandB Then
    2. Play(Lied1)
    3. Else If ...
    4. Play(Lied2)
    5. End If
    6. LastState = Me.WindowState
    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!
    @RodFromGermany Sry wenn ich jetzt mal so blöd nachfragen muss. habe jetzt das versucht und verschiedene sachen bei zustand a und b eingegeben. aber irgendwie bekomm ich das einfach net hin. was kommt denn bei zustand denn rein?
    Minimize und Normal? oder Me.WindowState.Minimize ider MinimizeBox? 8|

    Das ist der letzte Teil, was Sound angeht. denn ist das Grundgerüst fertig. Und ich kann mich dann gann auf das Thema Datenbank konzentrieren.

    @Facebamm -> habe das schon mal mit installiert.

    @VaporiZed -> Werde mir das genau anschauen und das zu Rate nehmen.
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:
    Hab jetzt das wie folgt gemacht ->

    VB.NET-Quellcode

    1. ​Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    2. Dim LastState As FormWindowState
    3. If LastState = FormWindowState.Normal AndAlso Me.WindowState = FormWindowState.Minimized Then
    4. My.Computer.Audio.Play(My.Resources.Minimize, AudioPlayMode.Background)
    5. LastState = Me.WindowState
    6. ElseIf LastState = FormWindowState.Minimized AndAlso Me.WindowState = FormWindowState.Normal Then
    7. My.Computer.Audio.Play(My.Resources.Maximize, AudioPlayMode.Background)
    8. LastState = Me.WindowState
    9. End If
    10. LastState = Me.WindowState
    11. End Sub


    Er zeigt keine Fehler an. Beim minimieren wird auch der Ton Abgespielt. Aber nicht beim wiederherstellen des Fensters.

    mache ich das wie folgt, funktioniert zwar der ton beim minimieren und wiederherstellen des Fensters, aber der Ton wird auch beim Programm Start mit abgespielt, was ja nicht sein soll ->

    VB.NET-Quellcode

    1. Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    2. Dim LastState As FormWindowState
    3. If LastState = FormWindowState.Normal AndAlso Me.WindowState = FormWindowState.Minimized Then
    4. My.Computer.Audio.Play(My.Resources.Minimize, AudioPlayMode.Background)
    5. ElseIf LastState = FormWindowState.Normal Then
    6. My.Computer.Audio.Play(My.Resources.Maximize, AudioPlayMode.Background)
    7. End If
    8. LastState = Me.WindowState
    9. End Sub


    Habe diverse Varianten versucht, aber noch leider kein Erfolg. Wo habe ich hier nen Fehler gemacht bzw. was vergessen?
    Grüße Snipy26



    Auf jeder Aktion erfolgt immer eine Re-Aktion, und selbst wenn es nur ne Fehlermeldung ist. :thumbsup:

    Snipy26 schrieb:

    VB.NET-Quellcode

    1. Dim LastState As FormWindowState
    gehört nicht in die Prozedur, sondern in die Klasse.
    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!