程序调用plink.exe发送命令设置路由
2015-09-22 09:01
176 查看
项目要求程序调用cmd.exe然后执行plink.exe登录到路由器,然后执行路由器的命令对其进行设置。本体和cmd.exe交换数据,发送命令到cmd.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; }
相关文章推荐
- c语言算法小练习-13
- SqlServer数据库将自增值从头开始
- 我的gulpfile.js
- 随机删除数据库N条记录
- 关于C#面向对象2
- Leetcode Compare Version Numbers
- 说说iOS与内存管理(中)
- java 防止 XSS 攻击的常用方法
- 微软开发自己的 Linux 操作系统
- ssh localhost 登陆时出现的密码问题
- Servlet生命周期方法,request.getRequestDispatcher
- 持续集成CI(三)待具体实践
- 源码推荐(9.22):利用UIScrollView实现几个页面的切换,纯代码实现水滴和波浪动画
- c语言算法小练习-12
- 翻转二叉树
- MySQL联合查询
- asp.net(C#)清除全部Session与单个Session
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- Java泛型
- QT 读取txt 文件