I'm having some problems with open and save boxes. Every time I open the open box and click open my program goes all screwed up. After the first time a open box is opened I have problems with my directories.

My code for the open box below opens a mp3
Code:
case ID_MUSIC_MUSICPLAYER:
{
	OPENFILENAME ofn;
	char szFileName[MAX_PATH] = "";
	ZeroMemory(&ofn, sizeof(ofn));
	ofn.lStructSize = sizeof(ofn);
	ofn.hwndOwner = NULL;
	ofn.lpstrFilter = "MP3 Files (*.mp3)\0*.mp3\0All Files (*.*)\0*.*\0";
	ofn.lpstrFile = szFileName;
	ofn.nMaxFile = MAX_PATH;
	ofn.Flags = OFN_FILEMUSTEXIST;
	ofn.lpstrDefExt = "mp3";
	ofn.lpstrInitialDir = "Downloaded Music";

	if(GetOpenFileName(&ofn))
	{
		ShellExecute(hwnd, "open", ofn.lpstrFile, NULL, NULL, SW_MINIMIZE);
	}
}
break;
I also have some code that opens the directory with all the mp3s but after I've opened the mp3 with the code above it won't work anymore. The code to open the folder is below.
Code:
case ID_MUSIC_DOWNLOADEDMUSIC:
	ShellExecute(hwnd, "explore", "Downloaded Music", NULL, NULL, SW_MAXIMIZE);
break;
I don't know why its doing this but I know it messes up the directories, because other stuff also doesn't work properly after using the mp3 launcher.