Необходимость: Объединить результат function GetComputerName (nameBuf)
с командой, чтобы открыть Chormium.
Задача: Создайте новый профиль с именем машины, на которой выполняется установка.
проблема: Я не знаю, как я могу выполнить это объединение, которое я пытался выполнить с strcpy
а также strcat
безуспешно.
Вот мой код:
int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show)
{
//Close phpdesktop.exe
WinExec("taskkill /F /IM phpdesktop.exe", SW_HIDE);
//Sleep
Sleep(500);
//Open phpdesktop.exe mini server
WinExec("phpdesktop.exe -S 127.0.0.1:54007 -t www -c php.ini", SW_HIDE);
//Sleep
Sleep(500);
//Get computer name
TCHAR nameBuf[MAX_COMPUTERNAME_LENGTH + 2];
DWORD nameBufSize;
nameBufSize = sizeof nameBuf - 1;
if (GetComputerName(nameBuf, &nameBufSize) == TRUE)
{
//How to make the concatenation result nameBuf GetComputerName function with the command of Chromium.
WinExec(strcpy("chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=", nameBuf), SW_HIDE);
}
//Return
return 0;
}
—
Pastbin: http://pastebin.com/N1eyAfGV
Если вы не хотите использовать второй буфер, попробуйте это
THAR nameBuf[254 + 2]={0};
DWORD nameBufSize;
strcpy(nameBuf,"chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=");
nameBufSize = sizeof nameBuf - 1;
int index = strlen(nameBuf);
if (GetComputerName(&nameBuf[index], &nameBufSize) == TRUE)
{
WinExec(nameBuf, SW_HIDE);
}
strcpy
в const char *
Запускает неопределенное поведение:
std::string s = "chromium\\ChromiumPortable ...";
s += nameBuf;
WinExec(s.c_str(), SW_HIDE);
Попытайся:
TCHAR command[1024];
strcpy(command, "chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=");
strcat(command,nameBuf);
WinExec(command, SW_HIDE);