Muzyka w exe

0

Można zrobić plik .exe a w nim muzykę? Zrobiłem plik .bat który przekonwertowałem na .exe i chciałbym aby ze startem uruchamiała się wybrana przeze mnie muzyka, a kiedy zamknie się program to sama się wyłączy. Wiem, że można uruchomić muzykę komendą start, ale potem nie ma możliwości jej wyłączenia jeżeli zamkniemy cmd krzyżykiem.

Zależy mi aby:
-muzyka wł się ze startem konsoli i wył z jej zamknięciem
-muzyka najlepiej odpalała się w tle
-całość była jednym plikiem (czyli wszystko np w .exe, ponieważ chce wysłać to w jednym pliku, a nie w archiwum)

Da radę coś takiego zrobić?

Przepraszam jeżeli zły dział.

0

Zrobiłem plik .bat który przekonwertowałem na .exe
Co zrobiłeś, jak i dlaczego?

Generalnie bat jest przeznaczony do tworzenia co prostszych skryptów, a nie aplikacji - jeśli chcesz takie bajery, pisz np. w C++ (WinAPI przewiduje nawet gotową metodę PlaySound).

0

"Zrobiłem plik .bat który przekonwertowałem na .exe" - to nie będzie exe.

0

czyli wszystko np w .exe, ponieważ chce wysłać to w jednym pliku, a nie w archiwum każdy bardziej przyzwoity serwer poczty odrzuci takiego maila uznając go za szkodliwy.

0

Zawsze możesz zrobić coś takiego w C#:

using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
using System.Media;

class Program {
    public static void Main(string[] args) {
        try {
            var process = new Process();
            process.StartInfo.UseShellExecute = true;
            process.StartInfo.FileName = @"cmd.exe";
            process.EnableRaisingEvents = true;

            var player = new SoundPlayer(@"C:\Windows\Media\tada.wav");
            player.LoadCompleted += (sender, e) => {
                process.Start();
            };
            player.Load();
            player.PlayLooping();           

            process.Exited += (sender, e) => {
                player.Stop();
            };
        }
        catch(Exception ex) {
            Console.WriteLine(ex.ToString());
        }

        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
}

PS: Wiem, że to dział C/C++ ale nie wiem jak to zrobić w C/C++, a chciałem pomóc ;)

1

Wszystko się da. Musisz tylko znaleźć bibliotekę, która odtwarza muzykę z bufora oraz napisać konwerter, który dane binarne Twojego pliku muzycznego przekształci do kompilowalnej tablicy (kod źródłowy).
Do ładowania muzyki z pamięci oraz odtwarzania jej w C++ możesz np. użyć SFML - http://www.sfml-dev.org/documentation/2.3.2/classsf_1_1Music.php#ae93b21bcf28ff0b5fec458039111386e

2

@_13th_Dragon

To samo prawie pod C++/CLI w Visualu

Proszę...:

#include "stdafx.h"

using namespace System;
using namespace System::Media;
using namespace System::Diagnostics;
using namespace System::ComponentModel;

ref class MusicalCmd{
private:
	Process^ process;
	SoundPlayer^ player;	

public:
	MusicalCmd() : process(gcnew Process()), player(gcnew SoundPlayer()) { 
		this->process->StartInfo->UseShellExecute = true;
		this->process->EnableRaisingEvents = true;
		this->process->StartInfo->FileName  = "cmd.exe";
		this->process->Exited += gcnew EventHandler(this,&MusicalCmd::StopSoundPlayer);
	}

	void StartProcess(Object^ sender, AsyncCompletedEventArgs^ e){
		this->process->Start();
	}

	void StopSoundPlayer(Object^ sender, EventArgs^ args){
		this->player->Stop();
	}

	void Play(String^ path) {
		try{
			this->player->LoadCompleted += gcnew AsyncCompletedEventHandler(this,&MusicalCmd::StartProcess);
			this->player->SoundLocation = path;
			this->player->Load();
			this->player->PlayLooping();
		}
		catch(Exception^ ex){
			Console::WriteLine(ex->ToString());
		}
	}
};

int main(array<System::String ^> ^args)
{
	auto cmd = gcnew MusicalCmd();
	cmd->Play("C:\\Windows\\Media\\tada.wav");

	Console::WriteLine("Press any key to exit...");
	Console::ReadKey();
    return 0;
}

Jakbym się cofnął w czasie o 15 lat :)

0

Okej, dzięki za odpowiedź :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1