windows - 在 .bat 文件中启动一个进程但隐藏它?

标签 windows batch-file

我想在 .bat 文件中启动我的应用程序之一,但它是可见的并且占用了我的任务栏中的空间。如何启动应用程序而不使其可见?

最佳答案

这是我几年前编写的一个实用程序来执行此操作:

#include <windows.h>
#pragma comment(lib, "user32.lib")

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
  const char *p = GetCommandLine();
  if (*p == '"') {
    p++;
    while (*p && *p != '"') {
      p++;
    }
    p++;
  } else {
    while (*p && *p != ' ') {
      p++;
    }
  }
  while (*p == ' ') {
    p++;
  }
  if (*p == 0) {
    MessageBox(NULL, "Usage: nocli <command>\nExecute <command> without a command prompt window.", "nocli Usage", MB_OK);
    return 1;
  }
  //if (MessageBox(NULL, p, "nocli debug", MB_OKCANCEL) != IDOK) return 1;
  STARTUPINFO si;
  ZeroMemory(&si, sizeof(si));
  si.cb = sizeof(si);
  PROCESS_INFORMATION pi;
  if (CreateProcess(NULL, const_cast<char *>(p), NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) {
    CloseHandle(pi.hThread);
    WaitForSingleObject(pi.hProcess, INFINITE);
    DWORD exitcode;
    GetExitCodeProcess(pi.hProcess, &exitcode);
    CloseHandle(pi.hProcess);
    return exitcode;
  } else {
    MessageBox(NULL, "Error executing command line", "nocli", MB_OK);
    return 1;
  }
  return 0;
}

不能保证,但它一次在一种情况下对我有用。 :)

关于windows - 在 .bat 文件中启动一个进程但隐藏它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2946473/

相关文章:

c++ - Windows Batch - 如何在将标准输出重定向到文件时添加时间戳

java - 通过批处理脚本访问属性文件

windows - 检查命令是否在批处理文件中可用

c - ldap_init 和 ldap_set_option 问题

windows - 安装为服务时在 Windows 上重定位 JENKINS_HOME

windows - 从 UNIX/LINUX 机器在 Windows 机器上执行命令

batch-file - 带延迟变量扩展的批处理文件 - URL 编码 - 等号 - RSA token 转换器

windows - 如何查看 ".bat"文件中的命令行参数?

windows - 在 Windows 7 上通过 cygwin/node.js 创建音频 Sprite 需要一些帮助

c++ - Windows 套接字编程 - 错误代码 0