0

Stackoverflow で見つかったいくつかのソリューションを試してみましたが、動作しません。C++ から .LOG (.txt ファイル) を開始したいのですが、それを含むパス フォルダーにスペースが含まれている可能性があるため、試してみるとそれを開始するには、pah(スペースを含む)が間違っているため、ファイルが見つからないというエラーが表示されます。私のコードは次のようになります。

void Log (unsigned int Code,...)
{
char currdate[11] = {0};
SYSTEMTIME t;
GetLocalTime(&t);
sprintf(currdate, "%02d:%02d:%02d", t.wHour, t.wMinute, t.wSecond);

PROCESSENTRY32 pe32;
FILE* FileHwnd1;

FileHwnd1 = fopen("TEST.log","a+");
fprintf(FileHwnd1,"[%s] Code: %X\n",currdate,Code);
fclose(FileHwnd1);
char buffer[MAX_PATH];
GetModuleFileName( NULL, buffer, MAX_PATH);
char Path[50];

wsprintf(Path,"start %s\\AntiHack.log",buffer);
system(Path);//Here is where i get the containing spaces path error
}

ありがとう。

4

2 に答える 2

2

システムコールを完全に避けて、プロセスを自分で起動することをお勧めします。

  1. AssocQueryString () を使用して、拡張機能 (この場合は .log) に関連付けられているプロセスを見つけます。
  2. CreateProcess () 呼び出しをセットアップして起動し、適切なコマンド ラインを渡します。

これを行う方法は他にもありますが、お気づきのように、回り道には常に落とし穴があります。上記は、Explorer.exe が拡張機能に関連付けられたプロセスを起動する方法にスポットを当てています。

于 2012-09-19T04:18:41.030 に答える
0

あなたが試すことができます:

wsprintf(Path,"start \"\" \"%s\"\\\AntiHack.log",buffer);
于 2012-09-19T03:48:51.637 に答える