vs2005这段代码出问题

appleshao 2008-03-02 10:18:52
#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
char szCommandLine[] = "cmd";
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;

si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效
si.wShowWindow = TRUE; // 此成员设为TRUE的话则显示新建进程的主窗口,
// 为FALSE的话则不显示
BOOL bRet = ::CreateProcess (
NULL, // 不在此指定可执行文件的文件名
szCommandLine, // 命令行参数
NULL, // 默认进程安全性
NULL, // 默认线程安全性
FALSE, // 指定当前进程内的句柄不可以被子进程继承
CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口
NULL, // 使用本进程的环境变量
NULL, // 使用本进程的驱动器和目录
&si,
&pi);

if(bRet)
{
// 既然我们不使用两个句柄,最好是立刻将它们关闭
::CloseHandle (pi.hThread);
::CloseHandle (pi.hProcess);

printf(" 新进程的进程ID号:%d \n", pi.dwProcessId);
printf(" 新进程的主线程ID号:%d \n", pi.dwThreadId);
}
return 0;
}



好像是CreateProcess函数的最后一个参数有问题啊 提示'CreateProcessW' : cannot convert parameter 2 from 'char [4]' to 'LPWSTR'

期待高手解答!!!
...全文
127 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
appleshao 2008-03-02
  • 打赏
  • 举报
回复
星羽你有执行过这段程序吗?vs2005会出问题的.......
星羽 2008-03-02
  • 打赏
  • 举报
回复

#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
TCHAR szCommandLine[] = TEXT("cmd"); // 改成TCHAR,自动式配字符格式
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;

si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效
si.wShowWindow = TRUE; // 此成员设为TRUE的话则显示新建进程的主窗口,
// 为FALSE的话则不显示
BOOL bRet = ::CreateProcess (
NULL, // 不在此指定可执行文件的文件名
szCommandLine, // 命令行参数
NULL, // 默认进程安全性
NULL, // 默认线程安全性
FALSE, // 指定当前进程内的句柄不可以被子进程继承
CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口
NULL, // 使用本进程的环境变量
NULL, // 使用本进程的驱动器和目录
&si,
&pi);

if(bRet)
{
// 既然我们不使用两个句柄,最好是立刻将它们关闭
::CloseHandle (pi.hThread);
::CloseHandle (pi.hProcess);

printf(" 新进程的进程ID号:%d \n", pi.dwProcessId);
printf(" 新进程的主线程ID号:%d \n", pi.dwThreadId);
}
return 0;
}
linfengc 2008-03-02
  • 打赏
  • 举报
回复
要使用宽字符集的话,可以把char改成w_char
linfengc 2008-03-02
  • 打赏
  • 举报
回复
示'CreateProcessW' : cannot convert parameter 2 from 'char [4]' to 'LPWSTR'

修改工程属性为使用单字符集。
CreateProcessW w表示宽字符集 。CreateProcessA 表示单字符集。 LPWSTR W表示宽字符集。
appleshao 2008-03-02
  • 打赏
  • 举报
回复
是字符集的问题....改成多字节就行了,不过会导致系统问题~~~......

有什么办法在U字符集下面执行这段代码吗?

并且不要让系统出先停的转换cmd窗口内容~~

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧