我正在用Dev-C++编写一个C程序,并且我需要使用几个Windows (CMD)命令。这很简单,但在执行system()函数中的命令时,程序会在执行过程中运行控制台。
举个例子:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
system("if not exist c:\my_docs\doc.txt (xcopy /Y doc.txt c:\my_docs\)"); // Cmd command
system("pause");
return 0;
}
是否存在其他功能,或修改不显示控制台?
谢谢你!诚挚的问候。
发布于 2011-10-20 17:06:33
您可以使用WinExec("your cmd command", SW_HIDE);
而不是system("cmd command")
。
发布于 2009-10-20 21:07:10
你可以用CreateProcess做到这一点。
STARTUPINFOW si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (CreateProcessW(command, arg, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
发布于 2009-10-21 06:28:32
正如FigBug所说,CreateProcess()是可行的方法,但我不认为CreateProcess()可以执行shell if语句。您可能需要将其作为命令进行传递:
"cmd.exe /c \"if not exist c:\my_docs\doc.txt (xcopy /Y doc.txt c:\my_docs\)\""
但更好的解决方案可能是使用CreateFile()来测试文件是否存在,并使用CopyFile()来复制它。
https://stackoverflow.com/questions/1597289
复制相似问题