众所周知,在Windows下要想执行某个命令,必须打开Windows那个黑乎乎的DOS弹窗。那么当我们编写bat文件,或者在程序中编写程序需要程序执行某个终端命令时,不想让这个黑乎乎的弹窗弹出来要怎么办呢,接下来记录一下我这两天的新得:
(1)执行bat文件避免弹窗
网上说的一大堆方法试了一下,还是这个比较靠谱:
建立一个vbe或者vbs文件(两个文件本是同根生,前者可以加密,后者不可以加密),然后在这个文件中添加以下代码:
Set ws = createObject("WScript.shell")
ws.run "cmd /c xxx.bat",vbhide
这个xxx.bat就是你想要执行的.bat文件,只需要将你的.bat
文件和你的.vbe文件放在同一个目录下,然后执行.vbe文件,就可以让你的xxx.bat文件无弹窗式地执行了。
(2)在程序代码中需要执行终端命令且避免弹窗
首先我们在程序代码中添加执行终端命令的代码一般会想到调用system()函数,这个函数在linux和windows下都是这个名字,而且用法也相似,但是在Windows下的程序中调用这个函数会出现弹窗,怎么样避免这个弹窗呢,如果非要用system这个函数的话,暂时没有找到好的解决办法,所以我选择用其他的函数代替这个system函数,就取名为MySystem吧。函数原型如下:
void CMainFrame::MySystem( CString cmd, CString par, DWORD nShow)
{
SHELLEXECUTEINFO ShE