Ahoj, potřeboval bych spustit mp3 na pozadí programu. Nebo aspoň normálně spustit mp3. Může mi někdo pomoct?
Fórum › C / C++
Spuštění mp3 na pozadí
Doporučuji použít MCI
http://radekchalupa.cz/clanky/?kod=205&obsah=15 ukázkový příklad
http://msdn.microsoft.com/en-us/library/dd743458%28VS.85%29.aspx MSDN reference
A nebylo by něco jednodušího? Něco jako system("start \"wmplayer.exe\" \"hudba.mb3\"");
Ani by to nemuselo být na pozadí. Stačilo by aby se to otevřelo ve Windows Media Player
Tak třeba zrovna system() by měla fungovat. Akorát bych to asi napsal jako
system("start \"\" \"soubor.mp3\"");
nebo
system("start \"\" \"wmplayer.exe\" \"soubor.mp3\"");
Jinak efektu start (plus minimalizace) dosáhneš takhleShellExecute(NULL, "open", "soubor.mp3", NULL, NULL, SW_MINIMIZE);
A pokud jde o tu jednoduchost, tak v tom ukázkovém programu je pro přehrávání jen to MCIWndCreate a MCIWndPlay, zbytek je výběr souboru a obsluha tlačítek, což ty nepotřebuješ. A napsat dva příkazy není nic složitého ;)
Zdendo díky funguje to (ten Shell...)
ale dalo by se to přes to i vypnout?
Protože když dám:
ShellExecute(NULL, "open", "soubor.mp3", NULL, NULL, SW_HIDE);
tak se mi to krásně spustí a nádherně schová ale když vypnu program tak písnička běží dál. Dalo by se to nějak vypnout?
Na zavření aplikace potřebuješ znát buď HWND jejího okna (FindWindow) a pak mu poslat zprávu WM_CLOSE. Nebo potřebuješ znát handle procesu, aby si ho mohl třeba přes TerminateProcess uzavřít. Pak je lepší spouštět jinou aplikaci přes CreateProcess (místo ShellExecute), protože vrací platný handle procesu.
ShellExecute ti moc možností nedává. Navíc nevíš, v čem se to spustí, takže těžko to nějak ovládat.
Přehrávání může probíhat v dříve spuštěné instanci, takže ti handly nového procesu jsou k ničemu a ještě to přeplácne pausnutý film, playlist, atd. (pokud nejde nějak vynutit jiné chování)
Prostě s externím přehráváním jsou zbytečné problémy.
Zkus to MCI.
OK
Mohl by jste mi nekdo vysvetlit to MCI. Já to totiž moc nechápu, sem zatim taková "lamka". NApište mi prosím nějakej příklad s vysvětlením. Děkuji
HWND hwnd;//hwnd hlavního okna
HINSTANCE hInst; // pokud máš aplikaci WIN32API, tak v tomhle můžeš mít uloženou instanci hlavního okna
char file[MAX_PATH];//cesta k souboru
HWND hMCI = MCIWndCreate(hwnd, hInst, (DWORD) WS_CAPTION, (LPSTR) file);//inicializace
MCIWndPlay(hMCI);//spustí přehrávání
MCIWndStop(hMCI);//zastaví přehrávání
MCIWndDestroy(hMCI);//konec práce s MCI
musíš mít vložený "Vfw.h" soubor (#include <vfn.h>)
a myslím, že ještě nějakou libku
Je nějaký způsob, jak lze pomocí MCI přehrát soubor mp3 v resources bez toho, aniž bych to nahrával někam do tempu?
HWND hMCI = MCIWndCreate(hwnd, hInst, (DWORD) WS_CAPTION, (LPSTR) MAKEINTRESOURCE(HUDBA);//nefunguje
Díky
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Spusteni Mp3 — založil Atheo
Spuštění programu na pozadí — založil dragon124
Spuštění dávky na pozadí — založil
Spuštění souboru, spuštění .NET 2.0 aplikace pod .NET 1.1 — založil Michal
Moderátoři diskuze