我想使用接受第二个参数作为“LPTSTR”的 Win API CreateProcess。
但是我在 char 数组中有指向我的 exe 的路径。我的 VS2013 项目(静态库)是 Unicode 编码类型。下面的代码片段。在这一行
“appPath = (LPTSTR)TestEXEPath;”
在下面发生类型转换的代码片段中,我看到“appPath”中的字符被转换为一些垃圾字符,而这个表达式“TestEXEPath”的 RHS 确实有有效字符。但是这里没有编译错误。在运行时,这些字符在“appPath”中被破坏。
我知道这种类型转换正在造成这个问题。但是我该如何解决这个问题,如何将这个 char 数组类型转换为“CreateProcess() API 所需的 LPTSTR typr。
或者有没有更好的方法来避免 char 数组本身。
LPTSTR appPath;
char cwd[_MAX_PATH];
getcwd(cwd, _MAX_PATH);
char TestEXEPath[_MAX_PATH];
strcpy(TestEXEPath, cwd);
strcat(TestEXEPath, "\\pwrtest.exe /sleep /c:1");
appPath = (LPTSTR)TestEXEPath; // The characters in this gets converted to some junk characters.
.......................
......................
CreateProcess(NULL, appPath, NULL, NULL, FALSE, 0, NULL, workingDir, &sI, &pI))