0

需要:将 的结果function GetComputerName (nameBuf)与打开 Chromium 的命令连接起来。

目标:使用正在执行安装的机器的名称创建一个新的配置文件。

问题:我不知道我如何才能完成这个连接尝试完成strcpystrcat没有成功。

这是我的代码:

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

4

3 回答 3

5

strcpy进入 aconst char *调用未定义的行为

std::string s = "chromium\\ChromiumPortable ...";
s += nameBuf;

WinExec(s.c_str(), SW_HIDE);
于 2013-10-22T12:35:58.297 回答
2

如果你不想使用第二个缓冲区,你可以试试这个

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);
}
于 2013-10-22T13:19:49.063 回答
1

试试看:

TCHAR command[1024];
strcpy(command, "chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=");
strcat(command,nameBuf);
WinExec(command, SW_HIDE);
于 2013-10-22T12:37:33.593 回答