2013-10-22 18 views
0

需要:連接function GetComputerName (nameBuf)的結果與打開Chormium的命令。在C++上使用const char(result GetComputerName)連接字符串

目標:使用正在執行安裝的計算機的名稱創建新配置文件。

問題:我不知道如何完成這個連接,試圖用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

回答

2

如果你不想使用第二個緩衝,你ACN試試這個

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); 
} 
5

strcpyconst char *調用未定義行爲

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

WinExec(s.c_str(), SW_HIDE); 
+0

這種解決方案我不能申請......但我相信這是我的錯。我感謝你的幫助朋友! – Globsecure

1

試試:

TCHAR command[1024]; 
strcpy(command, "chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory="); 
strcat(command,nameBuf); 
WinExec(command, SW_HIDE); 
+0

你的第二個'strcpy'應該是'strcat',不是嗎? – deepmax

+0

是的,當然......甚至第一個strcpy可能是strcat –

+0

第一個必須是'strcpy',因爲'command'尚未初始化。 – deepmax