//************************************
// Method: CreateMyBatOrProcess
// Access: public
// Returns: void
// CreateTime: 2018年07月18日
// Author: d
// Describe: CreateProcess隐藏窗口
//************************************
void CreateMyBatOrProcess()
{
// 执行的bat脚本或其他脚本
TCHAR szNsiPath[MAX_PATH*2] = {0x00};
sprintf_s(szNsiPath, MAX_PATH*2, "%s\\test.bat", InstallPath);
// CreateProcess
BOOL ret;
DWORD dwExitCode;
PROCESS_INFORMATION pi;
STARTUPINFO si;
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
//si.wShowWindow = SW_HIDE;
si.wShowWindow = SW_MINIMIZE;
si.lpReserved = NULL;
si.cbReserved2 = 0;
si.lpReserved2 = NULL;
GetStartupInfo(&si); // 该函数返回进程在启动时被指定的 STARTUPINFO 结构
// 执行CreateProcess 参数CREATE_NO_WINDOW 可以隐藏窗口
ret = ::CreateProcess(NULL, szNsiPath, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
if( ret )
{
// 关闭子进程的主线程句柄
WaitForSingleObject(pi.hProcess, INFINITE);
// 等待子进程的退出
GetExitCodeProcess(&pi.hProcess, &dwExitCode);
// 获取子进程的退出码
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
else
{
// fail
}
}
//************************************// Method: CreateMyBatOrProcess// Access: public// Returns: void// CreateTime: 2018年07月18日// Author: d// Describe: CreateProce...
<br /><br />方法很简单,在
createprocess
调用时修改一下STARTUPINFO的参数,使其
隐藏
即可。<br />下面是代码示例:<br />PROCESS_INFORMATION pi;<br />STARTUPINFO si; //
隐藏
进程
窗口
<br />si.cb =
sizeof(STARTUPINFO);<br />si.lpReserved = NULL;<br />si.lpDesktop =
NULL;<br />si.lpTitle = NULL;<b
在
Windows
中,要启动外部程序有几种方式:ShellExecuteEx,
CreateProcess
。
下面我们用
CreateProcess
来创建一个进程,并
隐藏
新进程的
窗口
。
#include "stdafx.h"
#include <
windows
.h>
#include <process.h>
#include <assert.h>
int _...
最近接触一个项目,
vc
中主
窗口
调用某个存在的EXE可执行文件在DOS(或者后台)执行,但是不想让用户看到这个执行文件,也就是不显示或者不创建
窗口
。从网上搜了很多总结了三种方法,希望对大家有用:
网上常见的两种方法(详细说明参考:http://blog.163.com/zhucongdzkd@126/blog/static/1399971932010780309154/):
方法一:将 Cr
PROCESS_INFORMATION pi;
STARTUPINFO si = { sizeof(STARTUPINFO) };
SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES),NULL,TRUE };
HANDLE cmdOutput = CreateFile("./output.txt",
ShellExecute和
CreateProcess
是
Windows
操作系统中的两个不同的
函数
,用于启动和执行其他应用程序。
ShellExecute
函数
可以用于打开指定类型的文件、URL、应用程序或者执行其他操作。它属于Shell32.dll动态链接库中的一个功能
函数
,具有简单易用的特点。ShellExecute
函数
将指定的文件或操作交给操作系统来处理,操作系统会根据文件类型或者操作种类的不同来决定采取什么措施,例如用关联的程序打开文件、打开指定的网址等。ShellExecute还可以更改操作系统的默认处理程序,以便自定义文件、操作的打开方式。ShellExecute
函数
适用于不需要对新启动的程序进行严格控制和监控的场景。
CreateProcess
函数
可以用于启动和执行另一个可执行文件。它属于Kernel32.dll动态链接库中的一个功能
函数
,具有更多的参数和选项,可以更加灵活地控制和监控新启动的程序。
CreateProcess
函数
可以指定新进程的可执行文件路径、命令行参数、环境变量等,并且可以创建一个新的进程并使其运行。
CreateProcess
函数
还可以指定新进程的启动方式、
窗口
样式和权限等参数,用于实现更加复杂的操作和需求。
CreateProcess
函数
适用于需要对新启动的程序进行精细控制和监控的场景。
总结来说,ShellExecute
函数
适用于简单地启动和执行外部应用程序或者操作,而
CreateProcess
函数
则适用于更加复杂的、需要对新进程进行精细控制和监控的情况。在实际应用中,我们可以根据具体需求选择合适的
函数
来启动和执行其他应用程序。
小飞大飞hu~:
[libtorrent] windows搭建 libtorrent 开发环境
小飞大飞hu~:
chromium 之 ipc (mojo) 消息机制
pof123:
【Visual Studio】调试过程中VS卡死无响应
prefectsli: