MFC调用telnet.exe,并向其传送执行指令 mfctelnet.exe 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还有telnet.exe会一闪而过,这个要怎么解决。 CreateProcess,然后通过pipe管道交互输入输出 ShellExecuteEx 我创建了2个pipe管道,一个用来输入信息,一个用来读取信息,但是运行时,程序会未响应(崩溃),如果createprocess调用的是cmd.exe,却能获取pipe管道信息,这是什么原因啊? 附上代码 HANDLE hRead1,hRead2,hWrite1,hWrite2; SECURITY_ATTRIBUTES sa1; sa1.lpSecurityDescriptor = NULL; sa1.nLength = sizeof(SECURITY_ATTRIBUTES); sa1.bInheritHandle = TRUE; if(!CreatePipe(&hRead1,&hWrite1,&sa1,0)) { MessageBox("创建匿名管道失败!"); } SECURITY_ATTRIBUTES sa2; sa2.lpSecurityDescriptor = NULL; sa2.nLength = sizeof(SECURITY_ATTRIBUTES); sa2.bInheritHandle = TRUE; if(!CreatePipe(&hRead2,&hWrite2,&sa2,0)) { MessageBox("创建匿名管道失败!"); } CString telnetPath = ""; char cCommandLine[MAX_PATH]; telnetPath = g_filepath + "\\telnet.exe"; ::strcpy(cCommandLine,telnetPath); STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si,sizeof(si)); si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; si.wShowWindow = SW_SHOW; si.hStdInput = hRead1; si.hStdOutput = si.hStdError = hWrite2; CreateProcess(cCommandLine,NULL,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi); Sleep(500); char Buff[] = "open XXXXXXX XXX\r\n"; DWORD dwWrite = 0; if(!WriteFile(hWrite1,Buff,strlen(Buff)+1,&dwWrite,NULL)) { MessageBox("写入数据失败!"); } Sleep(500); char buffer[4096] = {0}; DWORD bytesRead = 0; if(ReadFile(hRead2,buffer,4095,&bytesRead,NULL)) { MessageBox(buffer); } 有没有比较快速的算法,将当前屏幕的截图在内存中转换为PNG格式数据? 调用ppt的代码 VB中的“ Set Option2.Container = Frame1” 在VC 如何表达? 使用Windows Media Player10 控件如何播放字幕? 求救!!!一个界面的问题 关于Serial Port的问题(它是Udp的形式,还是tcp的形式) 如何阅读pdg文件??? 摄影头数据采集问题 怎样清除键盘缓冲区内容? 怎么改我的小图标?发文章前面一个叉太难看了 MFC+MSCOMM遇到问题,一串字符发送不完全。 求解释这些代码是什么意思
SECURITY_ATTRIBUTES sa1;
sa1.lpSecurityDescriptor = NULL;
sa1.nLength = sizeof(SECURITY_ATTRIBUTES);
sa1.bInheritHandle = TRUE; if(!CreatePipe(&hRead1,&hWrite1,&sa1,0))
{
MessageBox("创建匿名管道失败!");
} SECURITY_ATTRIBUTES sa2;
sa2.lpSecurityDescriptor = NULL;
sa2.nLength = sizeof(SECURITY_ATTRIBUTES);
sa2.bInheritHandle = TRUE; if(!CreatePipe(&hRead2,&hWrite2,&sa2,0))
{
MessageBox("创建匿名管道失败!");
}
CString telnetPath = "";
char cCommandLine[MAX_PATH];
telnetPath = g_filepath + "\\telnet.exe";
::strcpy(cCommandLine,telnetPath); STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si,sizeof(si));
si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
si.wShowWindow = SW_SHOW;
si.hStdInput = hRead1;
si.hStdOutput = si.hStdError = hWrite2;
CreateProcess(cCommandLine,NULL,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi); Sleep(500); char Buff[] = "open XXXXXXX XXX\r\n";
DWORD dwWrite = 0;
if(!WriteFile(hWrite1,Buff,strlen(Buff)+1,&dwWrite,NULL))
{
MessageBox("写入数据失败!");
} Sleep(500); char buffer[4096] = {0};
DWORD bytesRead = 0;
if(ReadFile(hRead2,buffer,4095,&bytesRead,NULL))
{
MessageBox(buffer);
}