CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

vc中直接调用dos命令

楼主yzhgr()2005-04-02 15:48:03 在 VC/MFC / 基础类 提问

CString   str;  
  str="net   use   p:   \\\\192.168.0.21\\d$   111111   /user:administrator";      
  ShellExecute(NULL,NULL,str,0,NULL,SW_HIDE);  
   
  为什么执行总不能成功?  
   
  而如果我在dos命令下执行就可以成功? 问题点数:20、回复次数:17Top

1 楼ra3(军机大臣)回复于 2005-04-02 16:24:30 得分 2

用   system   函数  
  Top

2 楼wangjianddy(~~~~>_<~~~~)回复于 2005-04-02 16:27:09 得分 0

同意楼上Top

3 楼wangjianddy(~~~~>_<~~~~)回复于 2005-04-02 16:28:27 得分 2

system("net   use   p:   \\\\192.168.0.21\\d$   111111   /user:administrator");Top

4 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-02 16:37:05 得分 2

system()就可以Top

5 楼ironox(铁牛)回复于 2005-04-02 16:52:42 得分 0

哇,这么简单啊,真神奇。关注一下,回去试试。Top

6 楼yzhgr()回复于 2005-04-02 16:57:53 得分 0

用system会弹出dos窗口,怎么解决这个问题?Top

7 楼Practise_Think(时代“过客”)回复于 2005-04-02 17:39:38 得分 2

CString   str;  
  str="net   use   p:   \\\\192.168.0.21\\d$   111111   /user:administrator";      
  ShellExecute(NULL,"open","cmd.exe",str,NULL,SW_HIDE);  
  Top

8 楼Practise_Think(时代“过客”)回复于 2005-04-02 17:41:49 得分 0

不好意思,上面的应该不行,因为不能带有空格Top

9 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-04-03 14:32:46 得分 8

str="/c   net   use   p:   \\\\192.168.0.21\\d$   111111   /user:administrator";Top

10 楼keiy()回复于 2005-04-03 14:40:08 得分 2

如果要隐藏控制台窗口,可用CreateProcess    
  见我回过的  
  http://community.csdn.net/Expert/topic/3883/3883795.xml?temp=.2644464  
  Top

11 楼surstar(我要写个操作系统出来……)回复于 2005-04-03 14:58:09 得分 0

收藏~Top

12 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2005-04-03 21:12:33 得分 2

WinExec也可以。  
   
  WinExec("delete   d:\test.txt",SW_HIDE);Top

13 楼yzhgr()回复于 2005-04-04 14:18:25 得分 0

vcmute()做法正确,但不知道是什么意思?能不能讲讲?  
   
  还有就是用ShellExecute执行时怎么才能知道命令执行的结果是成功了还是失败了?  
  比如我用ShellExecute来执行一个批处理文件,里面有一些dos命令,怎么才能知道里面的命令执行的结果?Top

14 楼bobob(静思)回复于 2005-04-04 14:23:22 得分 0

{  
   
  SECURITY_ATTRIBUTES   sa;  
  HANDLE   hRead,hWrite;  
   
  sa.nLength   =   sizeof(SECURITY_ATTRIBUTES);  
  sa.lpSecurityDescriptor   =   NULL;  
  sa.bInheritHandle   =   TRUE;  
  if   (!CreatePipe(&hRead,&hWrite,&sa,0))  
  {  
  MessageBox("Error   On   CreatePipe()");  
  return;  
  }    
  STARTUPINFO   si;  
  PROCESS_INFORMATION   pi;    
  si.cb   =   sizeof(STARTUPINFO);  
  GetStartupInfo(&si);    
  si.hStdError   =   hWrite;  
  si.hStdOutput   =   hWrite;  
  si.wShowWindow   =   SW_HIDE;  
  si.dwFlags   =   STARTF_USESHOWWINDOW   |   STARTF_USESTDHANDLES;  
  if   (!CreateProcess(NULL,"c:\\winnt\\system32\\cmd.exe   /c   dir"  
                  ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))  
  {  
  DWORD   dw   =   GetLastError();  
                  MessageBox("Error   on   CreateProcess()");  
                  return;  
  }  
  CloseHandle(hWrite);  
   
  char   buffer[4096]   =   {0};  
  DWORD   bytesRead;    
  while   (true)  
  {  
  if   (ReadFile(hRead,buffer,4095,&bytesRead,NULL)   ==   NULL)  
  break;  
  m_strResult+=   buffer;  
  UpdateData(false);  
  Sleep(200);    
  }    
  }  
  Top

15 楼bobob(静思)回复于 2005-04-04 14:23:52 得分 0

重定向输出到文本Top

16 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-04-04 16:03:26 得分 0

bool   CHistoryServerDlg::ExecuteUnrar(CString   strRarPath,   CString   strSourcePath)  
  {  
  //执行压缩文件  
  //因为rar所在的目录是program   files   这个路径有空格,所以cmd执行错误,我就把路径包含在环境变量里面了,所以只有一个rar   下面是格式化dos命令,这也是我试验了很多次才成功的,呵呵  
  //示例一下,FYI  
  CString   sWinRARInstallPath   =   "rar";  
  CString   sParameter   =   "";  
  sParameter.Format("cmd   /c   \"%s   a   -y   -ep2   %s   %s\"",sWinRARInstallPath,strRarPath,strSourcePath);  
   
  LPTSTR   CommandLine;  
  CommandLine   =   sParameter.GetBuffer(sParameter.GetLength());  
  sParameter.ReleaseBuffer();  
  STARTUPINFO   si;  
  PROCESS_INFORMATION   pi;  
  ZeroMemory(&si,sizeof(si));  
  si.cb   =   sizeof(si);  
  ZeroMemory(&pi,sizeof(pi));  
   
  //Start   the   child   process.  
  if(!CreateProcess(NULL,  
  CommandLine,  
  NULL,  
  NULL,  
  false,  
  CREATE_NO_WINDOW,  
  NULL,  
  NULL,  
  &si,  
  &pi)  
  ){  
  perror("调用解压缩程序WINRAR出现错误!");  
  return   false;  
  }  
  WaitForSingleObject(pi.hProcess,   INFINITE);  
  DWORD   ExitCode;  
  GetExitCodeThread(pi.hThread,   &ExitCode);  
  AlertErrMessage(ExitCode);  
  CloseHandle(   pi.hProcess   );  
  CloseHandle(   pi.hThread   );  
  return   true;  
  }Top

17 楼yzhgr()回复于 2005-04-04 16:36:13 得分 0

所答非所问Top

相关问题

  • vc调用dos命令(2)
  • 在vc中怎么调用dos命令?
  • vc中怎样调用dos命令?
  • 请教:可以用VC调用WORD的命令吗?
  • 在VC中如何调用cmd的命令???
  • 调用net命令
  • 怎么调用dos命令?
  • Java调用系统命令
  • 怎样调用dos命令
  • 如何调用DOS命令?

关键词

  • 执行
  • sa
  • null
  • sparameter
  • si
  • 命令
  • hwrite
  • shellexecute
  • hread
  • createprocess

得分解答快速导航

  • 帖主:yzhgr
  • ra3
  • wangjianddy
  • oyljerry
  • Practise_Think
  • vcmute
  • keiy
  • kugou123

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo