音楽再生時における変数を、問題なく結合をするには?

解決


音楽を再生したい人  2005-10-18 23:06:51  No: 59310

以下のソースでiniファイルから取得した値とcsSTingに格納された値を結合したが、
CreateProcess(NULL,(LPTSTR)p,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
で機能してくれません。

PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si,0,sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;
const char * p = NULL;

char buff[1024];
DWORD dwLen = GetModuleFileName(NULL, buff, sizeof(buff));
CString csModulePath(buff);
int iPos = csModulePath.ReverseFind('\\');
CString csModuleDir = csModulePath.Left(iPos);
CString csIniFileName = csModuleDir + "\\Alarm.ini";

CString csIniTitle  = "AlarmData";
CString csIniFilePath  = "FilePath";
CString csPath    = "C:\\Program Files\\Windows Media Player\\wmplayer.exe ";

char CFilePath[256];
GetPrivateProfileString(csIniTitle,csIniFilePath,NULL,CFilePath,sizeof(CFilePath),csIniFileName);
CString csTest;
csTest.Format("%s%s",csPath,CFilePath);
p = csTest;
csPath += CFilePath;

CreateProcess(NULL,(LPTSTR)p,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
    
MessageBox("アラーム時刻です。","アラーム",MB_OK);
}

環境
 使用OS    (WindowsXP Pro SP2)
 使用コンパイラ    (Visual C++ 6.0 Enter SP6)
 プロジェクトの種類  (MFC Application SDI)

擬似的に
p = "C:\\Program Files\\Windows Media Player\\wmplayer.exe C:\\test\\sound.MID";
と p の値を入れると音楽が再生してくれます。

なぜ音楽が再生されなくなるのでしょうか?
結合の仕方がだめなのでしょうか?


Blue  2005-10-18 23:23:51  No: 59311

とりあえずデバッグしてみましょう。
適当なところにブレイクポイントを入れて、pの値をウォッチで確認してみましょう。

# HNは大切です。1回で捨てるようなHNをつけてはいけないと思います。


音楽を再生したい人  2005-10-18 23:45:25  No: 59312

わかりました。
初心に帰ってC言語の本を読んでました。
するとまたエスケープシーケンスでひっかっかっていました。
csTest.Format("%s%s",csPath,CFilePath);

csPath.Format("\"%s\"\"%s\"",csFilePath,CFilePath);
にするとできました。
お騒がせしました。
Blueさん。ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加