C++ C+;上带有常量字符(结果GetComputerName)的串联字符串+;
Need:将函数GetComputerName(nameBuf)的结果与打开Chormium的命令连接起来 目标:使用正在执行安装的机器的名称创建新的配置文件 问题:我不知道如何实现这种连接,我尝试用C++ C+;上带有常量字符(结果GetComputerName)的串联字符串+;,c++,concat,strcpy,strcat,C++,Concat,Strcpy,Strcat,Need:将函数GetComputerName(nameBuf)的结果与打开Chormium的命令连接起来 目标:使用正在执行安装的机器的名称创建新的配置文件 问题:我不知道如何实现这种连接,我尝试用strcpy和strcat来实现,但没有成功 这里是我的代码: int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show) { //Close phpdesktop.exe WinExec("taskki
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:
strcpy
转换为const char*
调用未定义的行为:
试试看:
TCHAR command[1024];
strcpy(command, "chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=");
strcat(command,nameBuf);
WinExec(command, SW_HIDE);
如果你不想使用第二个缓冲区,你可以试试这个
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
应该是strcat
,不是吗?第一个必须是strcpy
,因为命令
尚未初始化。示例是正确的,第一个是strcpy
不是strcat
:-)使用此解决方案,我无法应用。。。但我相信这是我的错。我感谢你的帮助,朋友!
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);
}