调用CMD执行程序的各种方法

第一种:可以直接打开对应文件(文件夹),但不能定位到相应文件

::ShellExecute(NULL, _T("open"), "d:\CodeSpace\FileRecv\mcisendstring.txt", NULL, NULL, SW_SHOWNORMAL);

第二种:可以再打开文件夹的同时定位到相应的文件

::ShellExecute(NULL, L"open", L"explorer.exe", "/select,d:\CodeSpace\FileRecv\mcisendstring.txt", NULL, SW_SHOWNORMAL);

对于前两种的cmd执行方式,一般是用于打开文件或者链接之类的,另外的一些命令需要用到下面的方法:

第三种:用于直接打开一个可执行文件,并且可以等待其执行完成,适用于单线程

do{
DWORD lResult;
PROCESS_INFORMATION piProcInfo;
STARTUPINFO siStartInfo = {sizeof(STARTUPINFO)};

if(!CreateProcess(NULL, "uclient.exe /c", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo))
break;

WaitForSingleObject(piProcInfo.hProcess, INFINITE);
if(GetExitCodeProcess(piProcInfo.hProcess, &lResult) && lResult != -1 && lResult>0)
{
DebugInfoA("客户端有 %d 个文件可升级最新版", lResult);
int nresult = MessageBox(NULL, "有新版本可以升级,是否立即升级?", "客户端版本升级", MB_OKCANCEL);
if(IDOK == nresult)
{
CreateProcess(NULL, "uclient.exe /u", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo);
return 0;
}
}
}while(FALSE);

  

第四种:用于调用一个外部可执行文件执行相应命令,并且可以等待其执行完成,适用于单线程,其他部分代码同上一种

if(!CreateProcess(NULL, "7za.exe a \"d:\CodeSpace\Face.7z\" -o \"d:\CodeSpace\Face/*\"", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo));
if(!CreateProcess(NULL, "7za.exe x \"d:\CodeSpace\Face.7z\" -o \"d:\CodeSpace\Face\"", NULL, NULL, FALSE, NULL, NULL, NULL, &siStartInfo, &piProcInfo));

第五中:system 函数,可以直接执行输入到cmd里面的命令,但是代码中执行过程中会出现黑屏的闪烁,无法隐藏

system(“copy \"C:\Users\s810.png\" \"d:\CodeSpace\719950C424FC405CA6139EDFB99F4E08.png\"”);

第六种:WinExec 函数(可以直接执行cmd命令以及调用cmd执行命令,并且可以隐藏窗口)

WinExec("cmd.exe /c copy \"C:\Users\s810.png\" \"d:\CodeSpace\s893CD.png\"", SW_HIDE);

相关用法:

ex1: WinExec("Notepad.exe c:\\autoexec.bat",SW_SHOW); 执行 notepad.exe 并正常显示器窗口
ex2: WinExec("Notepad.exe",SW_SHOWMINIMIZED); 执行 notepad.exe 但最小化其窗口
ex3: WinExec("Command.com /c dir c:\\",SW_SHOW); 执行 dir C:\ ,完成后关闭 MSDOS 窗口
ex4: WinExec("Command.com /k dir c:\\",SW_SHOW); 执行 dir C:\ ,完成后不关闭 MSDOS 窗口

  

时间: 2024-10-20 17:35:17

调用CMD执行程序的各种方法的相关文章

[转]Delphi调用cmd的两种方法

delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hide);sleep(2000);memo1.Lines.LoadFromFile('c:\1.txt'); 2shellexecute(handle,nil,'cmd.exe',pchar(form2.edit1.text),nil,sw_hide);WinExec主要运行EXE文件.如:WinExec(’

测试:python调用cmd命令三种方法

目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中"exit 1"的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0×100,换算为10进制得到256. 如果我们需要获得os.system的正确返回值,那使用位移运算可以还原返回值: >>>

C#程序调用CMD执行命令

在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统.输入一些命令,cmd.exe可以执行,比如输入shutdown -s就会在30秒后关机.总之,它非常有用.打开方法:开始-所有程序-附件 或 开始-寻找-输入:cmd/cmd.exe 回车.它也可以执行BAT文件. 下面介绍使用C#程序调用cmd执行命令: 代码: 1 using System; 2 using System.Coll

Atitit.swt 线程调用ui控件的方法

Atitit.swt 线程调用ui控件的方法 1 SwingUtilities.invokeLater1 2 display.asyncExec方法1 3  display.timerExec(500,timer);2 4 .但有时候并不一定要程序执行时就要定时检测,有时需要外部事情激发这就出现了第2种解决方案,写一个内置类,可以放在事件监听的方法中,然后激发:2 5 参考3 1   SwingUtilities.invokeLater SwingUtilities.invokeLater(ne

C#程序调用cmd执行命令(转)

C#通过程序来调用cmd命令的操作 string str = Console.ReadLine(); System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 p.StartInfo.RedirectStandardInput = true

C#程序调用cmd.exe执行命令

代码部分 using System.Diagnostics; public class CmdHelper { private static string CmdPath = @"C:\Windows\System32\cmd.exe"; /// <summary> /// 执行cmd命令 /// 多命令请使用批处理命令连接符: /// <![CDATA[ /// &:同时执行两个命令 /// |:将上一个命令的输出,作为下一个命令的输入 /// &&

ASP.NET调用cmd命令提示符拒绝访问解决方案

最近做关于Windows Server POP3服务器的小项目,翻遍网络,也没能找到接口. 值得庆幸的是最终发现了一个控制台接口winpop.exe,也就是用cmd命令提示符与POP3服务器交互. 这样实属无奈之举,用cmd命令效率低不说,而且获取.分析返回信息相当麻烦.然而这还不算什么,最主要的是:B/S模式下,网页程序有权限调用cmd吗?   这里调用cmd,当然不是调用客户机器上的cmd,而是服务器上的cmd,这样心里还有点底. 小心翼翼的在我电脑上做了实验,成功在aspx页面中调用cmd

JavaWeb项目通过调用cmd实现备份数据库的功能

1.别急着上车,先测试一下能否成功调用cmd,可以尝试通过cmd命令打开计算器,代码如下: 2.能成功打开计算器后,证明调用cmd的方法是没错的,现在把cmd命令字符串改成我们备份数据库的 命令: 这里的命令是对mysql数据库的备份,其他的数据库则改成相应的命令即可.下图是对该命令的简单解释: 3.看着好像完工了,一运行,发现报错了,报错如下: Cannot run program "mysqldump": CreateProcess error=2,?????? 直接复制命令到cm

mfc调用cmd执行完保留黑框

mfc调用cmd的方法有很多,本文采用 ShellExecute ShellExecute(AfxGetMainWnd()->m_hWnd,L"open",L"cmd",L"/k ping 127.0.0.1",NULL, SW_SHOW ); 如上,即可保留黑框, 如果使用: ShellExecute(AfxGetMainWnd()->m_hWnd,L"open",L"cmd",L"