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'

期待高手解答!!!
...全文
103 5 打赏 收藏 举报
写回复
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窗口内容~~
相关推荐

面向工程应用:

市面上的一些密码学课程和密码学的书籍,很多都是从考证发,讲解算法原理并不面向工程应用,而我们现在缺少的是工程应用相关的知识,本课程从工程应用发,每种技术都主要讲解其在工程中的使用,并演示工程应用的代码

从零实现部分算法:
课程中实现了base16编解码 ,XOR对称加解密算法,PKCS7 pading数据填充算法,通过对一些简单算法的实现,从而加深对密码学的理解。
理论与实践结合:
课程如果只是讲代码,同学并不能理解接口背后的原理,在项目设计中就会留下隐患,现错误也不容易排查问题
如果只讲理论,比如对密码学的一些研究,对于大部分从事工程应用的同学并没有必要,而是理论与实践结合,一切为了工程实践。
代码现场打
代码不放在ppt而是现场打,更好的让学员理解代码编写的逻辑,老师现场敲代码正是展示了工程项目的思考,每个步骤为什么要这么做,考虑了哪些异常,
易学不枯燥:

课程为了确保大部分人开发者都学得会,理解算法原理(才能真正理解算法特性),学会工程应用(接口调用,但不局限接口调用,理解接口背后的机制,并能解决工程中会现的问题),阅读算法源码但不实现密码算法,,并能将密码学投入到实际工程中,如果是想学习具体的加密算法实现,请关注我后面的课程。

















发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-02 10:18
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下