Я работал над простой программой для Windows, использующей Visual C ++ 2010 Express, на 64-битной машине с Windows 7. Пока у меня есть простое меню с редактируемой текстовой областью. Я пытаюсь позволить пользователю выбрать медиафайл (фильм или музыкальный файл) и воспроизвести его с помощью программы по умолчанию.
Когда пользователь выбирает из меню Файл-> Воспроизвести-> Файл с компьютера, он запускает следующий код.
case ID_PLAY_FFC:
{
system("cd c:/windows/system32/&&cmd.exe");
FileOpen(hWnd);
system("cd c:/windows/system32/&&cmd.exe");
}
break;
Проблема заключается в том, что первый системный вызов выполняется должным образом. Второй вызов говорит мне, что «cmd.exe не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл». Я попытался поместить второй системный вызов в функцию открытия файла, и он, кажется, работает в любом месте до GetOpenFileName, но не после.
Единственное, что мне действительно нужно, - это путь к файлу, поэтому мне было интересно, знает ли кто-нибудь, как решить эту проблему или лучший способ сделать это?
код для FileOpen ():
void FileOpen(HWND hwnd)
{
OPENFILENAME ofn; // common dialog box structure
char szFile[MAX_PATH]; // buffer for file name MAX_PATH = 260
HANDLE hf; // file handle
// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// Display the Open dialog box.
//system("cd c:/windows/system32/&&cmd.exe"); will execute here.
if (GetOpenFileName(&ofn)==TRUE)
{
//system("cd c:/windows/system32/&&cmd.exe"); but not here.
hf = CreateFile(ofn.lpstrFile,
GENERIC_READ,
0,
(LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
if (hf == (HANDLE)-1)
{
MessageBox(NULL,"Could not open this file", "File I/O Error", MB_ICONSTOP);
return;
}
}
}