TCHAR Array to a concatenate LPCSTR
TCHAR Array to a concatenate LPCSTR
我正在读取一个ini文件,之后想执行一个外部程序(VBS文件(。但是我在字符串类型方面遇到了问题。
这是我的代码。
LPCTSTR path = _T(".\my.ini");
TCHAR fileName[500];
int b = GetPrivateProfileString(_T("Paths"), _T("filename"), _T(""), fileName, 500, path);
// fileName = myscript.vbs
// I need to execute "wscript myscript.vbs arg1"
// Execute script file. Doesnt work.
WinExec("wscript " + fileName + " arg1", MINIMZIED);
// OR. Doesnt work.
system("wscript " + fileName + " arg1");
这行不通。WinExec 想要一个LPCSTR
但我在TCHAR[]
中有fileName
,并希望与其他字符串连接。
如何正确转换或连接它?
来自 WinExec(( 文档:
提供此功能只是为了与 16 位 Windows 兼容。应用程序应使用
CreateProcess
功能。
这在你的情况下是CreateProcessW()
的。
或者,您可以使用_wsystem()
.
您需要使用另一个缓冲区连接字符串,例如:
LPCTSTR path = _T(".\my.ini");
TCHAR fileName[500];
TCHAR command[520];
int b = GetPrivateProfileString(_T("Paths"), _T("filename"), _T(""), fileName, 500, path);
_stprintf_s(command, 520, _T("wscript %.*s arg1"), b, filename);
然后您可以根据需要使用command
,例如:
STARTUPINFO si = {};
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_MINIMIZED;
PROCESS_INFORMATION pi = {};
if (CreateProcess(NULL, command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
...
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
或:
#ifdef UNICODE
#define system_t(cmd) _wsystem(cmd)
#else
#define system_t(cmd) system(cmd)
#endif
system_t(command);
相关文章:
- 'HMODULE LoadLibraryA(LPCSTR)':无法将参数 1 从 'const _Elem *' 转换为 'LPCSTR'
- 如何将 std::filesystem::p ath 转换为 LPCSTR,以便在 LoadLibrary() 变体之一
- 连接 LPCSTR 变量和文字?
- 如何将常量字符*作为参数传递给LPCSTR参数?
- 无法将"wchar_t"转换为"LPCSTR"
- TCHAR Array to a concatenate LPCSTR
- Concatenate char[] and uint32_t in C++
- concatenate bits C++
- concatenate string_views in constexpr
- 有没有办法像python:np.concatenate([x,y,z],axis=1)中那样沿着列连接三个二维向量C++
- LPCSTR 类型字符串出现乱码或显示错误
- 为什么openfileName lptrfiletitle param a lpstr而不是lpcstr
- 为什么ShellExecute不能使用包含文件路径的LPCSTR变量
- 将两个 LPCSTR 与 == 进行比较
- 如何比较LPCSTR
- 在 LPCSTR 中追加 BSTR
- TCHAR*到LPCSTR-链接器错误
- LPCTSTR 到 LPCSTR 的转换
- 将无符号字符转换为 LPCSTR
- LPCSTR和wchar_t问题.由于参数不匹配,导致链接器错误