我用CreateProcess启动telnet时,只有一个黑窗口闪一下就消失了。
我的代码:
/***************
New_Process 是一个结构,其中包含几个匿名管道句柄, 用来操作telnet
的输入和输出,定义为:
typedef struct New_Process
{
HANDLE readInput;//子进程从此句柄所属管道中得到父进程传过来的数据
HANDLE writeInput;//父进程向此句柄所属管道写入数据传给子进程 HANDLE readOutput;//父进程从此句柄所属管道中读出子进程输出数据
HANDLE writeOutput;//子进程向此句柄所属管道写入执行结果数据返回给父进程 HANDLE readError;//父进程从此句柄所属管道中读出子进程错误数据
HANDLE writeError;//子进程向此句柄所属管道写入执行错误信息返回给父进程
}New_Process;
******************/
New_Process * new_process=new New_Process;
//管道的权限描述
SECURITY_ATTRIBUTES security = {
sizeof(SECURITY_ATTRIBUTES),
NULL,
TRUE
};
security.bInheritHandle =TRUE;
security.nLength=sizeof(SECURITY_ATTRIBUTES);
security.lpSecurityDescriptor=NULL;
CreatePipe(&new_process->readInput,&new_process- >writeInput,&security,0);
CreatePipe(&new_process->readOutput,&new_process->writeOutput,&security,0);
CreatePipe(&new_process->readError,&new_process->writeError,&security,0); STARTUPINFO si;
ZeroMemory(&si,sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpReserved2 = NULL;
si.cbReserved2 = 0;
si.lpDesktop = NULL;
char SysDir[256];
GetSystemDirectory(SysDir,256);
si.dwFlags = 0;
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdInput = new_process->readInput;
si.hStdOutput = new_process->writeOutput;
si.hStdError = new_process->writeError;
si.wShowWindow = SW_SHOWNORMAL; BOOL err=CreateProcess("telnet.exe",NULL,
NULL,NULL,
true,CREATE_NEW_CONSOLE |CREATE_DEFAULT_ERROR_MODE
| NORMAL_PRIORITY_CLASS,
NULL,SysDir,
&si,&pi);
我的代码:
/***************
New_Process 是一个结构,其中包含几个匿名管道句柄, 用来操作telnet
的输入和输出,定义为:
typedef struct New_Process
{
HANDLE readInput;//子进程从此句柄所属管道中得到父进程传过来的数据
HANDLE writeInput;//父进程向此句柄所属管道写入数据传给子进程 HANDLE readOutput;//父进程从此句柄所属管道中读出子进程输出数据
HANDLE writeOutput;//子进程向此句柄所属管道写入执行结果数据返回给父进程 HANDLE readError;//父进程从此句柄所属管道中读出子进程错误数据
HANDLE writeError;//子进程向此句柄所属管道写入执行错误信息返回给父进程
}New_Process;
******************/
New_Process * new_process=new New_Process;
//管道的权限描述
SECURITY_ATTRIBUTES security = {
sizeof(SECURITY_ATTRIBUTES),
NULL,
TRUE
};
security.bInheritHandle =TRUE;
security.nLength=sizeof(SECURITY_ATTRIBUTES);
security.lpSecurityDescriptor=NULL;
CreatePipe(&new_process->readInput,&new_process- >writeInput,&security,0);
CreatePipe(&new_process->readOutput,&new_process->writeOutput,&security,0);
CreatePipe(&new_process->readError,&new_process->writeError,&security,0); STARTUPINFO si;
ZeroMemory(&si,sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpReserved2 = NULL;
si.cbReserved2 = 0;
si.lpDesktop = NULL;
char SysDir[256];
GetSystemDirectory(SysDir,256);
si.dwFlags = 0;
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdInput = new_process->readInput;
si.hStdOutput = new_process->writeOutput;
si.hStdError = new_process->writeError;
si.wShowWindow = SW_SHOWNORMAL; BOOL err=CreateProcess("telnet.exe",NULL,
NULL,NULL,
true,CREATE_NEW_CONSOLE |CREATE_DEFAULT_ERROR_MODE
| NORMAL_PRIORITY_CLASS,
NULL,SysDir,
&si,&pi);
解决方案 »
- aero glass上的控件问题
- Local Server,为什么不注册class也可以?coclass是不是不能指定threading model?
- SHFileOperation怎么知道实际复制、移动的文件
- 滚动条不能滚动?
- 达人请进,在线等
- 今天心情好,开放我的FTP,匿名访问,欢迎上传!!
- 我做了个聊天室程序,分为服务端和客户端,在局域网中可以聊天,如果想在两个不同的网吧中通讯是不是需要访问网吧主机的Proxy服务器?如果是
- 如何让简、繁两个版本的网页共享一个数据库?
- 请指教:是否有API可以获取目录的大小
- 怎么样让一个程序监视另一个程序的执行时间?
- 如何将字符串“<xml>xxxxxxxxxx</xml>”中的xxxx截取出来,xxx不定长。谢谢
- ON_NOTIFY在CLASS WIZARD 种找不到?
而且telnet客户端在我的电脑上可以启动,
但无法用我的程序启动