在vc里怎样执行一个DOS命令,或者批处理


在c语言里可以用system()系统调用来处理

:批处理 
ShellExecute(null, "open ", 
        "c:\\abc.bat ", " ", " ",SW_SHOW   ); 


      


深入浅出ShellExecute   
译者:徐景周(原作:Nishant   S) 

Q:   如何打开一个应用程序?   ShellExecute(this-> m_hWnd, "open ", "calc.exe ", " ", " ",   SW_SHOW   ); 
或   ShellExecute(this-> m_hWnd, "open ", "notepad.exe ", 
        "c:\\MyLog.log ", " ",SW_SHOW   ); 
正如您所看到的,我并没有传递程序的完整路径。 
Q:   如何打开一个同系统程序相关连的文档?   ShellExecute(this-> m_hWnd, "open ", 
        "c:\\abc.txt ", " ", " ",SW_SHOW   ); 
Q:   如何打开一个网页?   ShellExecute(this-> m_hWnd, "open ", 
        "http://www.google.com ", " ", " ",   SW_SHOW   ); 
Q:   如何激活相关程序,发送EMAIL?   ShellExecute(this-> m_hWnd, "open ", 
        "mailto:nishinapp@yahoo.com ", " ", " ",   SW_SHOW   ); 
Q:   如何用系统打印机打印文档?   ShellExecute(this-> m_hWnd, "print ", 
        "c:\\abc.txt ", " ", " ",   SW_HIDE); 
Q:   如何用系统查找功能来查找指定文件?   ShellExecute(m_hWnd, "find ", "d:\\nish ", 
        NULL,NULL,SW_SHOW); 
Q:   如何启动一个程序,直到它运行结束?   SHELLEXECUTEINFO   ShExecInfo   =   {0}; 
ShExecInfo.cbSize   =   sizeof(SHELLEXECUTEINFO); 
ShExecInfo.fMask   =   SEE_MASK_NOCLOSEPROCESS; 
ShExecInfo.hwnd   =   NULL; 
ShExecInfo.lpVerb   =   NULL; 
ShExecInfo.lpFile   =   "c:\\MyProgram.exe ";
ShExecInfo.lpParameters   =   " ";
ShExecInfo.lpDirectory   =   NULL; 
ShExecInfo.nShow   =   SW_SHOW; 
ShExecInfo.hInstApp   =   NULL;
ShellExecuteEx(&ShExecInfo); 
WaitForSingleObject(ShExecInfo.hProcess,INFINITE); 
或:   PROCESS_INFORMATION   ProcessInfo;   
STARTUPINFO   StartupInfo;   //This   is   an   [in]   parameter 
ZeroMemory(&StartupInfo,   sizeof(StartupInfo)); 
StartupInfo.cb   =   sizeof   StartupInfo   ;   //Only   compulsory   field 
if(CreateProcess( "c:\\winnt\\notepad.exe ",   NULL,   
        NULL,NULL,FALSE,0,NULL, 
        NULL,&StartupInfo,&ProcessInfo)) 
{   
        WaitForSingleObject(ProcessInfo.hProcess,INFINITE); 
        CloseHandle(ProcessInfo.hThread); 
        CloseHandle(ProcessInfo.hProcess); 
}     
else 
{ 
        MessageBox( "The   process   could   not   be   started... "); 
} 

Q:   如何显示文件或文件夹的属性?   SHELLEXECUTEINFO   ShExecInfo   ={0}; 
ShExecInfo.cbSize   =   sizeof(SHELLEXECUTEINFO); 
ShExecInfo.fMask   =   SEE_MASK_INVOKEIDLIST   ; 
ShExecInfo.hwnd   =   NULL; 
ShExecInfo.lpVerb   =   "properties "; 
ShExecInfo.lpFile   =   "c:\\ ";   //can   be   a   file   as   well 
ShExecInfo.lpParameters   =   " ";   
ShExecInfo.lpDirectory   =   NULL; 
ShExecInfo.nShow   =   SW_SHOW; 
ShExecInfo.hInstApp   =   NULL;   
ShellExecuteEx(&ShExecInfo); 

posted on 2011-03-09 13:42 wrh 阅读(3417) 评论(3)  编辑 收藏 引用

评论

# re: 在vc里怎样执行一个DOS命令,或者批处理 2011-06-27 13:17 东钱湖公墓

博文还是一样的好,谢谢你的分享,以后我会常来的。  回复  更多评论   

# re: 在vc里怎样执行一个DOS命令,或者批处理 2011-07-06 12:56 宁波废品回收

博主你的博文不错啊,我会继续支持你的  回复  更多评论   

# re: 在vc里怎样执行一个DOS命令,或者批处理 2011-12-15 16:03 24小时

看不懂,但我真想学会怎样用c条用dos  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

常用链接

留言簿(19)

随笔档案

文章档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜