程序调用plink.exe发送命令设置路由
来源:互联网 发布:嵌入式系统与人工智能 编辑:程序博客网 时间:2024/06/10 00:05
项目要求程序调用cmd.exe然后执行plink.exe登录到路由器,然后执行路由器的命令对其进行设置。本体和cmd.exe交换数据,发送命令到cmd.exe然后从其获取执行的结果进行判断。代码如下:
初始化代码:
BOOL CMotorolaSetDlg::OpenCMDProcess(){ SECURITY_ATTRIBUTES sa; STARTUPINFO si; TCHAR cmdLine[256] = {0}; TCHAR wcRcvBuff[1024] = {0}; PROCESS_INFORMATION ProcessInformation; sa.nLength=sizeof(sa); sa.lpSecurityDescriptor=0; sa.bInheritHandle=true; if(!CreatePipe(&(this->m_hReadPipe1),&(this->m_hWritePipe1),&sa,0)) { return FALSE; } if(!CreatePipe(&(this->m_hReadPipe2),&(this->m_hWritePipe2),&sa,0)) { return FALSE; } ZeroMemory(&si,sizeof(si)); GetStartupInfo(&si); si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; si.wShowWindow = SW_HIDE; si.hStdInput = this->m_hReadPipe2; si.hStdOutput = si.hStdError = this->m_hWritePipe1; GetSystemDirectory(cmdLine,sizeof(cmdLine)); _tcscat(cmdLine, _T("\\cmd.exe")); if(CreateProcess(cmdLine,NULL,NULL,NULL,TRUE,0,NULL,NULL,&si,&ProcessInformation) == 0) { return FALSE; } return TRUE;}
发送命令到cmd.exe的代码:
BOOL CMotorolaSetDlg::SndCmdToPipe(CString csCmd){ BOOL bRet = FALSE; unsigned long ulBytesRead = 0; char* pcCmd = NULL; pcCmd = CStringToChar(csCmd); bRet = WriteFile(this->m_hWritePipe2, pcCmd,csCmd.GetLength()+1,&ulBytesRead,0); if(pcCmd != NULL) { delete pcCmd; } return bRet;}
从cmd.exe接收反馈的代码:
BOOL CMotorolaSetDlg::RcvDataFromPipe(TCHAR* pwcBuff, DWORD dwLen){ BOOL bRet = FALSE; unsigned long ulBytesRead = 0; if(dwLen > sizeof(pwcBuff) && pwcBuff == NULL) { bRet = FALSE; } else { memset(pwcBuff, 0, dwLen); bRet = PeekNamedPipe(this->m_hReadPipe1,pwcBuff,dwLen,&ulBytesRead,0,0); if(bRet) { bRet = ReadFile(this->m_hReadPipe1,pwcBuff,dwLen,&ulBytesRead,0); } else { bRet = FALSE; } } return bRet;}
0 0
- 程序调用plink.exe发送命令设置路由
- C#程序调用cmd.exe执行命令
- Java 程序调用 exe
- c#调用EXE程序
- silverlight调用exe程序
- 程序调用.exe文件
- python调用exe程序
- silverlight调用exe程序
- JS调用exe程序
- C#调用exe程序
- c#调用EXE程序
- Java调用exe程序
- 调用程序发送短信
- 关于AIX路由设置命令
- Java 调用cmd.exe命令
- Java 调用cmd.exe命令
- Java 调用cmd.exe命令
- Java 调用cmd.exe命令
- Android基础复习之Spinner
- android的通知栏——Notification
- iOS软件开发 设置UITextView输入内容位置从左上角开始
- springMVC教程初级(三)springmvc+Mybatis整合(重点 )
- 进程的三个状态的转换
- 程序调用plink.exe发送命令设置路由
- jQuery中bind,live,delegate与one方法的用法及区别
- viewpager + fragmentpageradapter 切换fragment产生的问题
- Animator xml解析Animator 和第三种图片点击方式
- 判断一个文本文件的编码格式
- c算法-小球落下反弹高度
- QT 读取txt 文件
- 进程与任务的区别
- 持续集成CI(三)待具体实践