首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >隐藏C system()函数中的控制台,Win

隐藏C system()函数中的控制台,Win
EN

Stack Overflow用户
提问于 2009-10-20 21:01:36
回答 5查看 42.3K关注 0票数 17

我正在用Dev-C++编写一个C程序,并且我需要使用几个Windows (CMD)命令。这很简单,但在执行system()函数中的命令时,程序会在执行过程中运行控制台。

举个例子:

代码语言:javascript
复制
#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;
    }

是否存在其他功能,或修改不显示控制台?

谢谢你!诚挚的问候。

EN

回答 5

Stack Overflow用户

发布于 2011-10-20 17:06:33

您可以使用WinExec("your cmd command", SW_HIDE);而不是system("cmd command")

票数 25
EN

Stack Overflow用户

发布于 2009-10-20 21:07:10

你可以用CreateProcess做到这一点。

代码语言:javascript
复制
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);
}
票数 15
EN

Stack Overflow用户

发布于 2009-10-21 06:28:32

正如FigBug所说,CreateProcess()是可行的方法,但我不认为CreateProcess()可以执行shell if语句。您可能需要将其作为命令进行传递:

代码语言:javascript
复制
"cmd.exe /c \"if not exist c:\my_docs\doc.txt (xcopy /Y doc.txt c:\my_docs\)\""

但更好的解决方案可能是使用CreateFile()来测试文件是否存在,并使用CopyFile()来复制它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1597289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档