そこで、バッチファイルを生成するというジグガンジャーの提案を最後に使用しました。私がプログラミングしているソフトウェアは、vlc ムービー プレーヤー (または他のムービー プレーヤーを使用できます) の外部インスタンスをロードすることにより、プログラムでムービーを再生することを目的としています。
このコードは PlayMovie(char* MovieFileName) 関数内にあります。
これにより、1 行のコードでバッチ ファイルが作成され、バッチ ファイルが実行され、Movies// フォルダー内で生成された ini ファイルから投稿されたデータが取得されます。
//Create batch file
FILE * pFile;
//char* movieinfowritebuffer = "ffprobe -v quiet -print_format ini -show_format -show_streams Movies/Kai.mp4 > Movies/Kai.mp4.ini";
//Minf_wrBuffer = Minf_finalpath
char* Minf_wrBuffer = &Minf_finalpath[0u];
pFile = fopen ("MPlayer_MovieInfo.bat", "wb+");
fwrite (Minf_wrBuffer,strlen(Minf_wrBuffer),1, pFile);
fclose (pFile);
Sleep(250);
//MessageBox(NULL,"Next, we use ShellExecuteA to launch the .bat file.","LAUNCHER",NULL);
//Run batch file to create mp4 info ini
ShellExecuteA(NULL,"open","MPlayer_MovieInfo.bat",NULL,NULL,SW_HIDE);
Sleep(250);
//MessageBox(NULL,"Now, we grab the duration of the movie file from the ini file using GetPrivateProfileString.","LAUNCHER",NULL);
//Get duration from ini file
//Get the filename to create...
std::string iniFileToCreate = "Movies\\" + Minf_MovieName + ".ini";
char MovieDurationBuffer[256];
GetPrivateProfileString("streams.stream.1",
"duration",
"Default",
MovieDurationBuffer,
256,
iniFileToCreate.c_str());
float MovieDuration = atof(MovieDurationBuffer);
//Now play with MovieDuration
float MovieDurationTruncated = MovieDuration;
int tmp = MovieDurationTruncated * 100000; // 44.8 truncated to 44
MovieDurationTruncated = tmp / 100.0; // 4.4
char MovieDurationChar[20]; sprintf(MovieDurationChar, "%1.0f", MovieDurationTruncated-3);
int MovieDurationInt;
sscanf(MovieDurationChar, "%d", &MovieDurationInt);