首页 > 系统相关 >win32 调用外部进程以及如何隐藏consle窗口

win32 调用外部进程以及如何隐藏consle窗口

时间:2023-01-12 12:46:03浏览次数:34  
标签:opt comment 调用 console consle LPCWSTR win32 pragma

如何隐藏console窗口

FreeConsole();

在启动console后释放console,console突然闪退

#pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"")

#pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"")
调用上面这条C的命令,能够使链接器不去调用cmd窗口

micorosoft

#pragma comment( comment-type [ , "comment-string" ] ) // Places a comment record into an object file or executable file.

stackoverflow

1. #pragma comment // is a compiler directive which indicates Visual C++ to leave a comment in the generated object file.
 The comment can then be read by  the linker when it processes object files.
2. #pragma comment(lib, libname) //tells the linker to add the 'libname' library to the list of library dependencies, as
 if you had added it in the project properties at Linker->Input->Additional dependencies

调用外部进程

stdlib.h下面的函数

system("XXX");

这个函数即使使用了 #pragma comment 来不调用cmd窗口,但是在启动XXX命令的时候还是会启动一个外部CMD窗口来调用XXX,而FreeConsle效果不好,因此不建议使用

windows.h下面的函数

WinExce

WINBASEAPI
UINT
WINAPI
WinExec(
    _In_ LPCSTR lpCmdLine,
    _In_ UINT uCmdShow
    );
// 这个函数第二个参数就是win32里面的nCmdShow,常用的有SW_HIDE(表示不显示目的调用窗口)和SW_SHOW

使用例子

# include <Windows.h>
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") // 因为这个是console应用,这样可以不开启console
int main() {
	/// 这样还是会产生控制台,只是会一下子释放控制台的内存而已
	WinExec("./active_bg_run/active_bg.exe", SW_SHOW);
}

CreateProcess();

//函数原型
WINBASEAPI
BOOL
WINAPI
CreateProcessW(
    _In_opt_ LPCWSTR lpApplicationName,
    _Inout_opt_ LPWSTR lpCommandLine,
    _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
    _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
    _In_ BOOL bInheritHandles,
    _In_ DWORD dwCreationFlags,
    _In_opt_ LPVOID lpEnvironment,
    _In_opt_ LPCWSTR lpCurrentDirectory,
    _In_ LPSTARTUPINFOW lpStartupInfo,
    _Out_ LPPROCESS_INFORMATION lpProcessInformation
    );

使用列子

ShellExecute

//函数原型
SHSTDAPI_(HINSTANCE) ShellExecuteW(_In_opt_ HWND hwnd, _In_opt_ LPCWSTR lpOperation, _In_ LPCWSTR lpFile, _In_opt_ LPCWSTR lpParameters,
    _In_opt_ LPCWSTR lpDirectory, _In_ INT nShowCmd);

使用例子

CreateProcess 和 ShellExecute 可以前往 官网 查看

标签:opt,comment,调用,console,consle,LPCWSTR,win32,pragma
From: https://www.cnblogs.com/sqmw/p/17046023.html

相关文章

  • 参考案例之“对象调用方法时,如何在方法中使用对象,例如(root.display()的display方法中
    一、对象调用方法时,如何在方法中使用对象,例如(root.display()的display方法中使用root)1.测试方法@Testpublicvoidsuanfa24(){TreeNoderoot=newTreeNode(3,......
  • C#.NET制作DLL供DELPHI调用
    因为工作需求,本来想用C#做一个WebService,但是弄了两天没做成。于是想,反正都是我这一台电脑,做个DLL吧。1namespaceU8Service2{3publicinterfaceIMyFunc4......
  • Opencv调用深度学习模型
    2018年04月13日15:19:54 TiRan_Yang 阅读数:1150更多个人分类: TensorFlowPython深度学习 OpenCv从V3.3版本开始支持调用深度学习模型,例如Caffe,Te......
  • 这可能是Feign调用可重试的最佳方案了
    前言在我们公司里,不同的服务之间通过Feign进行远程调用,但是,我们在尝试使调用可重试时遇到了一个小问题,Feign框架本身可以配置的自己的重试机制,但是它是一刀切的方式,所有的......
  • fork()系统调用
    p239程序执行过fork()调用之后,系统中就同时存在两个进程在运行了(父进程和子进程)创建新进程成功后,系统中出现两个基本完全相同的进程,这两个进程执行没有固定的先后顺序,......
  • 怎么在C++中调用Python?C++调用python封装接口实例解析!
    看到标题很多小伙伴会问:不是都说python是胶水语言,他调用什么什么语言封装的库来做一些什么事情吗?怎么小编你这反而变成被调用的对象了呢?没错,常规情况下一般都是以python语......
  • Python实例浅谈之三Python与C/C++相互调用
    一、问题     Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结。二、Python调用C/C++1、Python调用C动态链接库       P......
  • libevent 结合 pthread-win32 在windows 平台上的使用
    libevent结合pthread-win32在windows平台上的使用libevent在windows平台上的使用,大致过程是:1)WSAStartup2)evthread_use_windows_threads3)event_base_new4)WSACleanup其......
  • 浅析 C++ 调用 Python 模块
    作为一种胶水语言,Python 能够很容易地调用 C 、 C++ 等语言,也能够通过其他语言调用 Python 的模块。Python 提供了 C++ 库,使得开发者能很方便地从 C++ 程序中......
  • 将Python文件发布成DLL并调用
    如何将Python文件发布成DLL供C/C++调用,试过两种思路:一种是用Cython将Python文件转为.c文件,但是简简单单4行代码,由于调用了NumPy,生成.c文件有5000+行,而且完全找不到原pyt......